java - Listview和复选框问题Android Studio
问题描述
我正在为 android studio 应用程序使用 SQLite 数据库,并且正在使用 ListView 来显示数据。我最近放了一个 CheckBox (没有在数据库中添加任何内容),我遇到的问题是,当我选中一个框并在 ListView 中向下时(我指定当我在列表中有很多项目时它会这样做)我框未选中或任意一个框被随机选中。
这是我在适配器中的代码:
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//déclaration d"un horlder
final ViewHolder holder;
// si la ligne n'existe pas encor
if(view == null) {
holder = new ViewHolder();
// la ligne est construite avec un formatage (inflater) relié à layoutlistpremierp
view = inflater.inflate(R.layout.layoutlistsacview, null);
//chaque propriété du holder est relié a une propriété graphique
holder.checksac = (CheckBox) view.findViewById(R.id.checksac);
// affceter le holder à la vue
view.setTag(holder);
}else{
//récup du holder dans la ligne existante
holder = (ViewHolder) view.getTag();
}
// valorisation du contenu du holder (donc de la ligne)
holder.checksac.setText(LesAjoutSac.get(i).getObjetSac());
return view;
}
private class ViewHolder{
CheckBox checksac;
}
我该如何解决?
解决方案
您需要保留一个列表,其中包含将保存复选框状态的每一行的数据,并在您标记的适配器上checkbox.isChecked = list[position].isChecked
然后需要向 chceckBox 添加一个侦听器以标记列表中的数据
list[position]..isChecked = isChecked
//isChecked 来自听众
您可以在此处查看我的示例,但它使用了 recyclerView(我强烈推荐它而不是 listView!)
推荐阅读
- python - python 3 ,0 中的除模 2
- c++ - 如何使用 Visual Studio C++ 将 2 个列表框添加到 1 个窗口?
- java - 有什么方法可以提高我的程序生成代码的性能吗?
- php - Laravel Eloquent whereDoesntHave() 文档让我感到困惑
- sql - 优化 SQL 中的查询
- php - 在 PHP 中重组一系列活动,将参与者与公共位置结合起来
- kubernetes - 使用过期时间注释 Kubernetes 资源
- vba - 为什么这要求我表达?
- javascript - 按元数据过滤器排序的数据表 - 最近激活的优先
- azure-ad-b2c - 密码保护不适用于自定义 B2C 流程