CheckBox in ListView
生活随笔
收集整理的這篇文章主要介紹了
CheckBox in ListView
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
CheckBox in ListView
Listview 在android中是經(jīng)常用的組件,一些特殊情況下,系統(tǒng)提供的list view item 不夠用, 不能滿足需求,那么就需要自定義listView。?如果在listview的item里面需要有一個(gè)CheckBox 和 2 個(gè) TextView(like gmail app list item),那么需要自定義list item layout和自定義adapter。 有個(gè)簡(jiǎn)單list item(例子里面只顯示一行內(nèi)容): <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:gravity="center_vertical"android:padding="5dp" ><CheckBoxandroid:id="@+id/checkBox1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:focusable="false"android:text="" /><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="74dp"android:layout_toRightOf="@+id/checkBox1"android:text="" /></RelativeLayout>
當(dāng)一個(gè)list view 的item里面有Button 或者是CheckBox等空間,會(huì)導(dǎo)致listView的ItemSelected方法失效。 為了解決這個(gè)問(wèn)題需要在Button或者是CheckBox里面添加一行設(shè)置: android:focusable="false" 這樣事件才能傳遞到List view 的item。
在上面的例子中有一個(gè)CheckBox,在自定義的adapter里面,要對(duì)CheckBox的focus Change事件監(jiān)聽(tīng),需要通過(guò)OnClickListener事件實(shí)現(xiàn)。
private ListAdapter adapter = new ListAdapter(){@Overridepublic void registerDataSetObserver(DataSetObserver observer) {}@Overridepublic void unregisterDataSetObserver(DataSetObserver observer) {}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic boolean hasStableIds() {return true;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {LayoutInflater inflater = (LayoutInflater)ListViewTest.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;final View view = inflater.inflate(R.layout.layout_listview_item_select_multi_1, null) ;TextView tv = (TextView)view.findViewById(R.id.textView1) ;tv.setText(data.get(position)) ;CheckBox cb = (CheckBox)view.findViewById(R.id.checkBox1) ;cb.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {CheckBox cb = (CheckBox)v ;if(cb.isChecked()){view.setBackgroundResource(R.drawable.list_selector2) ;}else{view.setBackgroundResource(R.drawable.list_selector3) ;}}}) ;return view;}@Overridepublic int getItemViewType(int position) {return 0;}@Overridepublic int getViewTypeCount() {return 1;}@Overridepublic boolean isEmpty() {return false;}@Overridepublic boolean areAllItemsEnabled() {return true;}@Overridepublic boolean isEnabled(int position) {return true;}} ; 當(dāng)然重寫(xiě)Adapter,不必實(shí)現(xiàn) ListAdapter. ? 繼承BaseAdaper 或者她的子類就行。
?
轉(zhuǎn)載于:https://www.cnblogs.com/dyllove98/p/3146734.html
總結(jié)
以上是生活随笔為你收集整理的CheckBox in ListView的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: zend studio
- 下一篇: Oracle 11gR2 RAC 中的