解决 listview 人工设置选择值 setSelection(position) 无效
2014-10-22 16:50
411 查看
貌似 人工设置 Listview中某一项为 选中, 使用
setSelection(position)无效。
查了一下, 需要在 适配器里解决
package zms.zte2014.mydrawlayout1.myadapter;
import java.util.List;
import zms.zte2014.mydrawlayout1.R;
import zms.zte2014.mydrawlayout1.bean.MenuInfo;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class Myadapter5 extends BaseAdapter {
private List<MenuInfo> userlist;
private Context context;
private LayoutInflater inflater;
//当前所在行, 如果nowpos不设初始值的话 ,默认第0个会选中
private static int nowpos=10000;
public final class ListItemView { // 自定义控件集合
public TextView menuname;
public ImageView menuimg;
public LinearLayout menulay;
}
public Myadapter5(Context context, List<MenuInfo> users) {
super();
this.context = context;
userlist = users;
}
@Override
public int getCount() {
return userlist.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return userlist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public void setSelected(int setpos) {
nowpos = setpos;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 自定义视图
ListItemView listItemView = null;
if (convertView == null) {
listItemView = new ListItemView();
// 获取list_item布局文件的视图
inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(R.layout.list_items, null);
// 获取控件对象
// listItemView.image =
// (ImageView)convertView.findViewById(R.id.imageItem);
listItemView.menuimg = (ImageView) convertView
.findViewById(R.id.menu_img);
listItemView.menuname = (TextView) convertView
.findViewById(R.id.menu_name);
MenuInfo MenuInfo = userlist.get(position);
listItemView.menuname.setText(MenuInfo.getName());
listItemView.menuimg.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_drawer));
convertView.setTag(listItemView);
} else {
listItemView = (ListItemView) convertView.getTag();
}
listItemView.menulay=(LinearLayout)convertView.findViewById(R.id.menu_lay);
listItemView.menulay.setBackgroundResource(R.drawable.actionbar_item_pressed);
if(position==nowpos)
{
listItemView.menulay.setBackgroundResource(R.drawable.actionbar_item_normal);
}
return convertView;
}
}
在 listvew itemonclick里
menuListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
listViewAdapter.setSelected(nowItem);
}
});
setSelection(position)无效。
查了一下, 需要在 适配器里解决
package zms.zte2014.mydrawlayout1.myadapter;
import java.util.List;
import zms.zte2014.mydrawlayout1.R;
import zms.zte2014.mydrawlayout1.bean.MenuInfo;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class Myadapter5 extends BaseAdapter {
private List<MenuInfo> userlist;
private Context context;
private LayoutInflater inflater;
//当前所在行, 如果nowpos不设初始值的话 ,默认第0个会选中
private static int nowpos=10000;
public final class ListItemView { // 自定义控件集合
public TextView menuname;
public ImageView menuimg;
public LinearLayout menulay;
}
public Myadapter5(Context context, List<MenuInfo> users) {
super();
this.context = context;
userlist = users;
}
@Override
public int getCount() {
return userlist.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return userlist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public void setSelected(int setpos) {
nowpos = setpos;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 自定义视图
ListItemView listItemView = null;
if (convertView == null) {
listItemView = new ListItemView();
// 获取list_item布局文件的视图
inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(R.layout.list_items, null);
// 获取控件对象
// listItemView.image =
// (ImageView)convertView.findViewById(R.id.imageItem);
listItemView.menuimg = (ImageView) convertView
.findViewById(R.id.menu_img);
listItemView.menuname = (TextView) convertView
.findViewById(R.id.menu_name);
MenuInfo MenuInfo = userlist.get(position);
listItemView.menuname.setText(MenuInfo.getName());
listItemView.menuimg.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_drawer));
convertView.setTag(listItemView);
} else {
listItemView = (ListItemView) convertView.getTag();
}
listItemView.menulay=(LinearLayout)convertView.findViewById(R.id.menu_lay);
listItemView.menulay.setBackgroundResource(R.drawable.actionbar_item_pressed);
if(position==nowpos)
{
listItemView.menulay.setBackgroundResource(R.drawable.actionbar_item_normal);
}
return convertView;
}
}
在 listvew itemonclick里
menuListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
listViewAdapter.setSelected(nowItem);
}
});
相关文章推荐
- 解决ListView设置listSelector无效的问题
- Android girdView/listView item 高度设置无效的解决方法
- 解决ListView的getView()方法中View设置监听position错乱的问题
- 解决listview中的textview设置了setMovementMethod导致onItemclick无效的问题
- 关于设置选择条颜色多个ListView之间切换问题解决方案
- 动态设置ListView的分割线无效的解决办法
- ListView设置选中指定的条目无效,listView.setSelection(position);
- 关于设置选择条颜色多个ListView之间切换问题解决方案
- 解决listview的属性divider设置无效的问题
- android listview adapter中设置点击直接position被重用问题解决
- position:absolute与overflow:hidden,解决子元素设置position:absolute后父元素 overflow:hidden无效的问题
- table和div设置height:100%无效的完美解决方法
- 解决IE6下div层设置高度1px无效的问题
- IE7主页设置无效的解决方法
- REQUEST_FILENAME设置无效的解决解法
- VS2005中设置的断点无效:“当前不会命中断点,还没有为该文档加载任何符号”。解决方法
- ListView中设置item的背景色后,默认的行点击颜色失效的解决办法
- VS2010设置断点无效的解决方法
- FireFox下设置DIV的top和left无效解决方法
- 使用OWC 做图表时按周、月、年设置时间刻度是参数无效问题解决方法