日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android复选框不选中无法点击按钮,Android-Listveiw的checkbox,Button焦点问题

發布時間:2023/12/19 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android复选框不选中无法点击按钮,Android-Listveiw的checkbox,Button焦点问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CheckBox搶占Item焦點,導致Item點擊無效!

方法一:CheckBox設置android:clickable="false"

方法二:在Item根布局或ListView布局設置android:descendantFocusability="blocksDescendants"

在ListView的Item中的Button,CheckBox等子控件會搶占焦點,使得點擊item本身沒有響應!

常用android:descendantFocusability=”blocksDescendants”覆蓋子類控件焦點

descendantFocusability屬性定義viewGroup和其子控件之間關系:

beforeDescendants:viewgroup會優先其子類控件而獲取到焦點

afterDescendants:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點

blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點

android:descendantFocusability="blocksDescendants">

android:clickable="false"/>

android:descendantFocusability="blocksDescendants"/>

適配器在getview()中重復使用[被移除屏幕的item,即不可見的項]

會造成被選中的checkbox重新出現,顯示異常,故需要記錄checkbox的狀態!

public class MyAdapter extends BaseAdapter implements OnItemClickListener {

private HashMap isSelected; // 記錄checkbox狀態

public MyAdapter() {

// 初始化所有checkbox為未選擇

isSelected = new HashMap();

for (int i = 0; i < list.size(); i++)

isSelected.put(i, false);

}

@Override

public View getView(int position, View convertView, ViewGroup arg2) {

ViewHolder holder;

...

holder.cb.setChecked(isSelected.get(position)); // 更新checkbox狀態

return view;

}

@Override

public void onItemClick(AdapterView> arg0, View view,

int position, long arg3) {

// 切換checkbox狀態

isSelected.put(position, !isSelected.get(position));

notifyDataSetChanged();

}

}

public class MainActivity extends Activity {

...

MyAdapter adp = new MyAdapter();

listview.setAdapter(adp);

listview.setOnItemClickListener(adp);

...

}

總結

以上是生活随笔為你收集整理的android复选框不选中无法点击按钮,Android-Listveiw的checkbox,Button焦点问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。