自定义MULTIPLE ListView

来源:互联网 发布:网络大电影的盈利规则 编辑:程序博客网 时间:2024/06/07 15:36

我们知道Android自带的multiple listview的实现是通过checkedTextView来实现的,但是这个控件很难看,而且一行内容布局固定。

 

以下我们自定义一个:

mListView = (ListView)findViewById(R.id.listview);mListView.setCacheColorHint(0);mListView.setItemsCanFocus(false);mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);


Adapter定义: 

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Data data = mDataList.get(position);if (convertView == null){convertView = mInflater.inflate(R.layout.xxxx, null);}TextView nameView = (TextView)convertView.findViewById(R.id.name);nameView.setText(data.FullName);ImageView checkView = (ImageView)convertView.findViewById(R.id.check_view);if (mListView.getAdapter() != null){SparseBooleanArray checkedArray = mListView.getCheckedItemPositions();if (0 <= position && position < checkedArray.size()){if (checkedArray.valueAt(position)){checkView.setImageResource(R.drawable.checkbox_selected);}else{checkView.setImageResource(R.drawable.checkbox_unselected);}}}return convertView;}


xxxx.xml布局文件实现

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    ><TextView     android:id="@+id/name"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textColor="@color/black"    android:layout_marginLeft="10dip"    android:gravity="center_vertical"    /><ImageView     android:id="@+id/check_view"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentRight="true"    android:layout_marginRight="10dip"    android:layout_centerVertical="true"    android:background="@drawable/checkbox_unselected"    /></RelativeLayout>


 

原创粉丝点击