首页 > 解决方案 > 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;
    }

我该如何解决?

标签: javaandroidandroid-studiolistviewcheckbox

解决方案


您需要保留一个列表,其中包含将保存复选框状态的每一行的数据,并在您标记的适配器上checkbox.isChecked = list[position].isChecked 然后需要向 chceckBox 添加一个侦听器以标记列表中的数据 list[position]..isChecked = isChecked//isChecked 来自听众

您可以在此处查看我的示例,但它使用了 recyclerView(我强烈推荐它而不是 listView!)


推荐阅读