我想在选择或取消选择时更改列表项颜色,并将所有选定值存储在数组中

时间:2017-05-17 05:46:26

标签: android listview arraylist checkbox

如何在水平列表视图中选择多个列表项。我想在列表中选择多个项目并将这些值存储在一个数组中。

        Async task to show sizelist

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            if (dialog != null) {
                dialog.dismiss();
                dialog = null;
            }

            if (flag == 1) {

                sizeAdapter = new SizeAdapter(Product.this, arraysize, "fonts/GeosansLight.ttf");
                list_size.setAdapter(sizeAdapter);

                list_size.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

更改课程中所选项目颜色的代码                             HomeGS homeGS = arraysize.get(position);

                        if (homeGS.getSelected()) {

                            homeGS.setSizeProduct(homeGS.getSizeProduct());
                            homeGS.setSelected(false);


                        } else {
                            homeGS.setSizeProduct(homeGS.getSizeProduct());
                            homeGS.setSelected(true);
                        }

                        arraysize.set(position, homeGS);
                        sizeAdapter.notifyDataSetChanged();
                        size = arraysize.get(position).getSizeProduct();

                    }

                });


            } else if (flag == 0) {


            }

        }

    }

这是我的尺寸适配器代码,用于更改所选项目的背景和文字颜色。

        if (oldData.get(position).getSelected()){

            holder.txt_name.setText(oldData.get(position).getSizeProduct());
            holder.txt_name.setBackgroundColor(Color.parseColor("#000000"));
            holder.txt_name.setTextColor(Color.parseColor("#ffffff"));

        }else {

            holder.txt_name.setText(oldData.get(position).getSizeProduct());
            holder.txt_name.setBackgroundResource(R.drawable.btn_border);
            holder.txt_name.setTextColor(Color.parseColor("#000000"));

        }
        return convertView;

    }

2 个答案:

答案 0 :(得分:1)

为你的列表制作这样的bean类

public class YourBean {

private String itemData;
private boolean checked;


public String getitemData() {
    return itemData;
}

public void setitemData(String itemData) {
    this.itemData= itemData;
}

public boolean isChecked() {
    return checked;
}

public void setChecked(boolean checked) {
    this.checked = checked;
}
}

然后像这样制作一个arrayList

ArrayList<YourBean> listArray = new ArrayList<>();

然后创建一个自定义适配器,使其成为列表的数据列表

然后如果选中复选框,则将检查的布尔值设置为true,如此

listArray.get(position).setChecked(true);

当你想让另一个arraylist为listArray运行for循环并检查boolean是否为true时,如果为true,则将其添加到你想要制作的另一个数组列表中。

答案 1 :(得分:0)

首先,您需要在beanClass的帮助下制作listView的arraylist,其中一个是item数据,另一个是boolean,显示是否选择了该字段。

在选择项目时,您需要将布尔值更改为true,这将帮助您处理所选项目。

每当您需要将所选项目数据添加到新的arraylist时,您可以为列表数组运行for循环,并可以检查布尔值。