Listview和复选框问题Android Studio
Posted
技术标签:
【中文标题】Listview和复选框问题Android Studio【英文标题】:Listview and checkbox problem Android Studio 【发布时间】:2021-06-15 06:31:21 【问题描述】:我正在为 android studio 应用程序使用 SQLite 数据库,并且正在使用 ListView 来显示数据。 我最近放了一个复选框(没有在数据库中添加任何内容),我遇到的问题是,当我选中一个框并进入 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;
我该如何解决?
【问题讨论】:
我想您希望复选框与列表中的每一行数据相关联? 【参考方案1】:您需要保留一个列表,其中包含将保存复选框状态的每一行的数据,并在您标记checkbox.isChecked = list[position].isChecked
的适配器上
然后您需要向 checkBox 添加一个侦听器以标记列表中的数据
list[position]..isChecked = isChecked
//isChecked 来自监听器
您可以查看我的示例 here,但它使用了一个 recyclerView(我强烈推荐它而不是 listView!)
【讨论】:
这是我对 ListView 中此类问题和示例的解释:programandroidlistview.blogspot.com【参考方案2】:在你的适配器中添加这个:
@Override
public int getCount()
return items.size();
@Override
public Object getItem(int position)
return items.get(position);
@Override
public long getItemId(int position)
return position;
【讨论】:
以上是关于Listview和复选框问题Android Studio的主要内容,如果未能解决你的问题,请参考以下文章
使用android中的自定义arrayadapter在listview中使用复选框检查后如何删除多个项目?