关于ListView 条目点击混乱的问题
来源:互联网 发布:电力交易中心 知乎 编辑:程序博客网 时间:2024/06/10 16:57
一个比较简单的方法就是给数据源的实体类里边加一个属性。代码:
Activity 里边
public class MainActivity extends Activity { ListView mListView; List<ItemDao>list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.mListView); list=new ArrayList<>(); for (int i=0;i<100;i++){//list添加100条数据 ItemDao dao = new ItemDao(); list.add(dao); } MyAdapter adapter = new MyAdapter(this); adapter.setList(list);//赋值给适配器 mListView.setAdapter(adapter); }}实体类,只有一个属性
public class ItemDao { public boolean isClicked() { return isClicked; } public void setIsClicked(boolean isClicked) { this.isClicked = isClicked; } boolean isClicked;}适配器
public class MyAdapter extends BaseAdapter { public MyAdapter(Context context) { this.context = context; } public void setList(List<ItemDao> list) { this.list = list; } List<ItemDao> list; Context context; @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; }@Override //这个方法说一下,当listView滚过一屏幕时就会重新调用getView()方法 public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; // holder,在手机性能比较差的时候快了不是一点半点 if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.list_item_view, null); Button mButton = (Button) convertView.findViewById(R.id.mButton); holder = new ViewHolder(); holder.button = mButton; convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //这个地方很关键,不能在onClick里边写,重新调用getView的话,实例化一遍view,不走onclike,onclike设置的属性无效 // 通过isCliked属性判断 if (list.get(position).isClicked) { if (position < 10) { holder.button.setText("position :" + "0" + position + " 已赞"); } else { holder.button.setText("position :" + position + " 已赞"); } holder.button.setBackgroundColor(context.getResources().getColor(R.color.clicked)); } else { if (position < 10) { holder.button.setText("position :" + "0" + position + " 点赞"); } else { holder.button.setText("position :" + position + " 点赞"); } holder.button.setBackgroundColor(context.getResources().getColor(R.color.unClicked)); } holder.button.setOnClickListener(new MyListener(position)); return convertView; } class ViewHolder { Button button; } class MyListener implements View.OnClickListener { public MyListener(int i) { this.i = i; } int i; @Override public void onClick(View v) { if (list.get(i).isClicked) { list.get(i).setIsClicked(false); } else { list.get(i).setIsClicked(true); } notifyDataSetChanged();//刷新适配器,重新调用getview,不然点击不能改变view } }}
1 0
- 关于ListView 条目点击混乱的问题
- listView条目不能点击问题
- Android ListView条目按钮点击状态混乱解决方案
- 关于ListView中点击条目不生效的解决办法
- 关于ListView滑动混乱问题
- ListView的复用问题,点击条目变色.不复用
- Android控件listView条目不能点击问题
- ListView条目混乱需要注意的几点内容
- 关于ListView中CheckBox选择混乱的问题
- 关于listview条目的重用
- Android ListView item中有按钮(Button)不能点击或者条目不能点击的问题
- 修改ListView的条目点击效果
- listView 条目错乱的问题
- android 关于ListView Item数据混乱问题
- android 关于ListView Item数据混乱问题
- ListView 条目显示点击
- 点击listview条目跳转
- 关于ListView加入HeaderView之后,点击条目时获得position参数移位的BUG修正
- 让你的程序“飞”起来——性能优化
- poj 3276Face The Right Way—反转(开关问题)
- 【转】Linux内核同步机制
- ios UIView的layoutSubviews和drawRect
- 根据c语言程序转换成汇编程序
- 关于ListView 条目点击混乱的问题
- HttpRequest.AppRelativeCurrentExecutionFilePath 属性
- 传智播客,从此,不再低调!
- 基础1
- 初学php之 href和Action,get和post的区别
- 支持向量机(三)核函数
- BLE-NRF51822教程1-常用概念
- 基于对话框的MFC图形界面程序的选择文件读取文件
- block—控制器间传值