CheckBox防止错乱
来源:互联网 发布:正常饮食知乎 编辑:程序博客网 时间:2024/05/22 17:43
在listview与CheckBox连用中会遇到复用问题,即使做了优化也不能防止CheckBox错乱,所以给它一个对象封装进集合。布局太丑就不展示效果啦!
activity_main.xml布局
<ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView>
在listv.xml布局
android:descendantFocusability=”blocksDescendants”
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants" android:orientation="horizontal"> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="iiiii" android:textSize="25sp" /> <CheckBox android:id="@+id/checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="150dp" /></LinearLayout>
MainActivity类
public class MainActivity extends AppCompatActivity { @ViewInject(R.id.listview) private ListView listView; private List<Bean> list = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); x.view().inject(this); for (int i = 0; i < 50; i++) { Bean bean = new Bean("item--" + i, false); list.add(bean); } MyAdapter adapter = new MyAdapter(); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { MyAdapter.ViewHolder holder=(MyAdapter.ViewHolder) view.getTag(); if (holder.checkBox.isChecked()){ holder.checkBox.setChecked(false); }else{ holder.checkBox.setChecked(true); } } }); }//适配器类 class MyAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; }//给listview做优化 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.listv, null); holder = new ViewHolder(); //获取控件id holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox); holder.textView = (TextView) convertView.findViewById(R.id.text); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final Bean bean = list.get(position); //给checkbox设置点击监听 holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { bean.isCheck = isChecked; } }); holder.textView.setText(bean.name); holder.checkBox.setChecked(bean.isCheck); return convertView; } class ViewHolder { TextView textView; CheckBox checkBox; } }}
Bean类
为了防止错乱建立对象给它属性值,boolean属性必不可少。
public class Bean { public String name; public boolean isCheck; public Bean(String name, boolean isCheck) { this.name = name; this.isCheck = isCheck; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isCheck() { return isCheck; } public void setCheck(boolean check) { isCheck = check; }}
App类
public class App extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(BuildConfig.DEBUG); }}
记得在AndroidManifest.xml里添加
android:name=".App"
记得导xutils包
compile 'org.xutils:xutils:3.5.0'
阅读全文
1 0
- CheckBox防止错乱
- listview中checkbox错乱
- ListView+CheckBox错乱问题
- Listview Checkbox错乱问题
- listView checkbox错乱
- Listview Checkbox错乱问题
- listview中的checkbox错乱
- Android ListView CheckBox状态错乱
- ListView中CheckBox错乱解决
- Android ListView CheckBox状态错乱
- Android ListView CheckBox状态错乱
- Android ListView CheckBox状态错乱
- Android ListView CheckBox状态错乱
- Android ListView CheckBox状态错乱
- Android ListView CheckBox状态错乱
- ListView 重用CheckBox出现错乱
- 解决Checkbox滑动错乱问题
- Android ListView CheckBox状态错乱
- 添加odbc数据源时的一些问题和解决办法
- Spring重写切面表达式
- 交叉工具链的安装
- CodeForces
- 模式:按业务能力分解
- CheckBox防止错乱
- 关于Matlab中double类型图像的后续处理问题
- Python深拷贝和浅拷贝
- PB:关于游标的使用
- 代码走查工具FindBugs, PMD,CheckStyle
- JLIKN固件修复
- 《剑指offer》给定一颗二叉搜索树,请找出其中的第k大的结点。
- RBAC数据库设计
- 扩展阅读 眼界与可以做的事