滚动时保持列表视图的颜色

时间:2017-01-27 19:10:13

标签: android listview

我的列表视图每行都有一个按钮。单击时,我更改此线条颜色。 问题是滚动时...返回默认值或其他线条着色。

按钮监听在适配器

内编码
public CustomAdapter(Context context, List<Map<String, String>> items, int resource, String[] from, int[] to) {
    super(context, items, resource, from, to);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);

    final View line = view;
    TextView txtid = (TextView) view.findViewById(R.id.txtid);
    TextView txtnumber = (TextView) view.findViewById(R.id.txtnumber);

    Button btn = (Button) view.findViewById(R.id.btncheck);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (txtnumber.getText().toString().equals(KEY-CODE)){
                line.setBackgroundColor(0x7F00FF00);
            }else {
                line.setBackgroundColor(0x7FFF0000);
            }
        }
    });        

    return view;
}

1 个答案:

答案 0 :(得分:1)

我曾经遇到过这样的事情,你可以使用HashMap保存按钮的状态,其中布尔值表示按钮的状态(如果被点击则为true,其他为false),知道getItemView里面是否点击了当前按钮或者不是来自HashMap。

一点代码:

在getItemView内部首先将每个按钮初始化为false(未单击)

if(map.get(v.findViewById(R.id.button)) == null)  
      map.put(v.findViewById(R.id.button)),false);

并在单击按钮后将Boolean设置为true:

map.put(v.findViewById(R.id.button)),true);

最后检查Boolean是否设置为true或false并设置颜色。