CheckBox in ListView
生活随笔
收集整理的這篇文章主要介紹了
CheckBox in ListView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CheckBox in ListView
Listview 在android中是經常用的組件,一些特殊情況下,系統提供的list view item 不夠用, 不能滿足需求,那么就需要自定義listView。?如果在listview的item里面需要有一個CheckBox 和 2 個 TextView(like gmail app list item),那么需要自定義list item layout和自定義adapter。 有個簡單list item(例子里面只顯示一行內容): <?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>
當一個list view 的item里面有Button 或者是CheckBox等空間,會導致listView的ItemSelected方法失效。 為了解決這個問題需要在Button或者是CheckBox里面添加一行設置: android:focusable="false" 這樣事件才能傳遞到List view 的item。
在上面的例子中有一個CheckBox,在自定義的adapter里面,要對CheckBox的focus Change事件監聽,需要通過OnClickListener事件實現。
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;}} ; 當然重寫Adapter,不必實現 ListAdapter. ? 繼承BaseAdaper 或者她的子類就行。
?
轉載于:https://www.cnblogs.com/dyllove98/p/3146734.html
總結
以上是生活随笔為你收集整理的CheckBox in ListView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zend studio
- 下一篇: Oracle 11gR2 RAC 中的