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的主要内容,如果未能解决你的问题,请参考以下文章

禁用listView android中复选框的更改

带有微调器和复选框的 Android Listview

选中复选框时检查Android listview多个项目

使用android中的自定义arrayadapter在listview中使用复选框检查后如何删除多个项目?

单击按钮时如何在android中获取带有ListView值的复选框,EditText?

滚动后未选中 ListView 适配器中的 Android 复选框