ListView多条选中以及统计选中状态,避免复用错乱
来源:互联网 发布:属于网络调查的特点是 编辑:程序博客网 时间:2024/06/04 18:56
昨晚帮朋友解决了一个选中状态错乱的问题,自己也复习了一下,所以把这个代码记录一下
/** * 描述:ListView多条选中以及统计选中状态,避免复用错乱 * 开发者:开发者的乐趣JRT * 创建时间:2017-4-20 21:32 * CSDN地址:http://blog.csdn.net/Jiang_Rong_Tao/article * E-mail:jrtxb520@163.com **/public class ListViewActivity extends AppCompatActivity { private static final String TAG = "ListViewActivity"; private ListView mListView; private List<ListItem> mList; private ListViewActivity mContext; private MyAdapter adapter; private TextView mTvCount; int count=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); mContext =this; Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); initData(); initView(); initListen(); } /** * 做假数据 */ private void initData() { mList=new ArrayList<>(); for (int i=0;i<30;i++){ ListItem listItem = new ListItem("李小龙" + i, false); mList.add(listItem); } } private void initView() { mListView = (ListView) findViewById(R.id.list_view); mTvCount = (TextView) findViewById(R.id.tv_count); adapter = new MyAdapter(); mListView.setAdapter(adapter); } private class MyAdapter extends BaseAdapter{ @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return mList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView==null){ convertView=View.inflate(mContext,R.layout.list_item,null); } MyHolder myholder=MyHolder.getViewHolder(convertView); myholder.tv_title.setText(mList.get(position).title); boolean isChoose = mList.get(position).isChoose; Log.i(TAG, "position="+position+",isChoose: ="+isChoose); myholder.iv_ischoose.setImageResource(isChoose?R.drawable.password_sel:R.drawable.password_nor); return convertView; } } private void initListen() { mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListItem itemAtPosition = (ListItem) parent.getItemAtPosition(position); boolean isChoose = itemAtPosition.isChoose; count=isChoose?--count:++count;//以前选中,再次点击表示没选中 mList.get(position).isChoose=!isChoose;//修改选中状态,并更新集合 Log.i(TAG, "count:= "+count); mTvCount.setText("选中了"+count+"个"); adapter.notifyDataSetChanged(); } }); } static class MyHolder{ private TextView tv_title; private ImageView iv_ischoose; public MyHolder( View convertView) { tv_title= (TextView) convertView.findViewById(R.id.tv_title); iv_ischoose= (ImageView) convertView.findViewById(R.id.iv_ischoose); } public static MyHolder getViewHolder(View convertView) { MyHolder holder= (MyHolder) convertView.getTag(); if(holder==null){ holder = new MyHolder(convertView); convertView.setTag(holder); } return holder; } }}
由于CheckBox有可能抢占光标,所以我就用ImageView切换图片实现,给javabean多加一个选中的字段。
public class ListItem { public ListItem(String title, boolean isChoose) { this.title = title; this.isChoose = isChoose; } public String title; public boolean isChoose;}
只是做个笔记而已
0 0
- ListView多条选中以及统计选中状态,避免复用错乱
- ListView+CheckBox 选中状态错乱问题
- Android ListView在有checkbox的情况下上下滑动选中状态错误以及position错乱
- 关于ListView中checkBox选中状态错乱问题的解决办法
- ListView嵌套CheckBox滑动时CheckBox选中状态错乱
- ListView嵌套CheckBox滑动时CheckBox选中状态错乱
- Android ListView选中状态
- ListView设置选中状态
- listView中有checkBox选中错乱问题解决
- 解决listView嵌套CheckBox的选中错乱
- iOS uicollectionview滚动选中状态错乱
- ListView/GridView嵌套CheckBox滑动时CheckBox选中状态显示错乱
- 安卓ListView选中状态
- 关于BaseAdapter,SimpleAdapter的数据显示错乱问题,选中状态错乱问题,Checkbox选中状态错乱问题总结
- ListView复用导致CheckBox状态错乱
- 解决checkbox在ListView中的选中错乱问题
- FLEX CheckBox 翻页后选中状态显示错乱
- 解决checkbox在滑动时选中状态错乱的问题
- python调用matplotlib
- Android自定义View构造函数详解
- TCP(HTTP)长连接和短连接区别和怎样维护长连接
- Python使用pyquery抓取数据实例
- Scala基础知识之伴生对象
- ListView多条选中以及统计选中状态,避免复用错乱
- linux中文件描述符fd和struct file结构体的释放
- Oracle11gR2 RAC for Linux安装下篇:Database 安装 简要步骤
- stm32 isp下载
- echarts的简单案例
- servlet错误 :HTTP Status 500
- 架构设计:系统存储(29)——分布式文件系统Ceph(管理)
- ELK搭建日志联合分析系统
- 原生js实现复制浏览器内容