我的列表视图每行都有一个按钮。单击时,我更改此线条颜色。 问题是滚动时...返回默认值或其他线条着色。
按钮监听在适配器
内编码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;
}
答案 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并设置颜色。