1. 程式人生 > >ListView的Item中設定按鈕實現

ListView的Item中設定按鈕實現

轉自:http://www.cnblogs.com/macroxu-1982/archive/2012/07/11/2585618.html

前言

    在專案的開發過程中,需要Listview的Item中包含按鈕的效果。在實際開發過,Item中放置按鈕後,ListView 單行選擇背景顏色變化的效果沒有了。

問題原因

    ListView 和 其它能觸發點選事件的widget無法一起正常工作的原因是加入其它widget後,ListView的itemclick事件將無法觸發,被其它widget的click事件遮蔽。

目前網路上普遍的解決方式

設定1  在Item的xml模板中設定 根佈局 屬性

 android:descendantFocusability=

 "blocksDescendants"

如下:

< RelativeLayout>

android:descendantFocusability= "blocksDescendants"

設定2 在按鈕控制元件<ImageButton>中設定屬性

android:focusable = "false"

補充:這種設定後,點選按鈕,整條Item都響應點選效果,顯示的效果非我們需要的

我們的需要的效果

1 ListView的Item本身可以選擇

2 Item中的按鈕可以隨意點選,不會干擾Item

實現的過程

 在ListView中用圖片控制元件,或者文字控制元件,來代替圖片按鈕和普通按鈕,並在Adapter中設定點選事件就可以

 如例:

複製程式碼
//根據資料項,設定點選文字框的文字,並設定點選事件
        TextView txt_Remember=(TextView)convertView.findViewById(R.id.txt_Remember);
        
        txt_Remember.setOnClickListener(new  TextView.OnClickListener()
        {
            public void onClick(View v){
                LibListViewAdapter.this.remove(LibListViewAdapter.this
.getItem(1)); } });