首页 > 代码库 > android中定义一个可勾选的ListView
android中定义一个可勾选的ListView
1、在layout中定义一个CheckedTextView
<CheckedTextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:gravity="center_vertical" android:text="Full Name" android:textColor="#000" />
2、定义一个Adapter,里面维护一个SpraseBooleanArray,每次getView()时,会根据SpraseBooleanArray里面存储的值设置check状态
class MyAdapter extends BaseAdapter { //这个数组中记录着被勾选项的状态 private SparseBooleanArray mCheckedTable; public MyAdapter() { mCheckedTable = new SparseBooleanArray(); //其他代码 }
3、在adapter的getView()方法中,根据SparseBooleanArray中的值来设置checked状态
public View getView(int position, View convertView, ViewGroup parent) { CheckedTextView checkedView = convertView.findViewById(R.id.textView1); checkedView.setChecked(mCheckedTable.get(position)); //其他代码}
4、设置一个OnItemClickListener,当列表项被点击时,执行CheckedTextView.toggle()方法,将状态转换过来。
5、并把CheckedTextView的新状态以及位置(位置为key,状态为value)加入array中
myListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { MyAdapter adapter = (MyAdapter) parent.getAdapter(); CheckedTextView name = (CheckedTextView) view.findViewById(R.id.textView1); name.toggle(); //put the checked item position into boolean array adapter.getCheckedTable().put(position, name.isChecked()); } });
所有被选中的项目信息,都在SpraseBooleanArray中,可以通过一个index和for循环,依次从中取出数据(使用keyAt()和valueAt()方法)。Value为true的key,即对应被选中的item.
android中定义一个可勾选的ListView
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。