【发布时间】:2016-02-04 20:41:48
【问题描述】:
我正在学习 getTag 和 setTag。我需要解释这些方法并想知道它们是如何工作的。 我制作了一个简单的 CustomListView,它有两个按钮和一个 textview。 按钮是加法和减法,增加或减少计数器的值,但问题是只有最后一个项目的值在变化。请给我一个解决方案以及一个很好的解释 谢谢。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_items, null);
add = (Button) convertView.findViewById(R.id.add);
sub = (Button) convertView.findViewById(R.id.sub);
textView = (TextView) convertView.findViewById(R.id.numberTV);
convertView.setTag(new ViewHolder(add, sub, textView , count));
}
holder = (ViewHolder) convertView.getTag();
textView = holder.textView;
count = holder.counter;
add = holder.add;
sub = holder.sub;
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count +=1;
textView.setText(String.valueOf(count));
}
});
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count -=1;
textView.setText(String.valueOf(count));
}
});
return convertView;
}
}
class ViewHolder {
Button add, sub;
TextView textView;
int counter = 0;
public ViewHolder(Button add, Button sub, TextView textView , int counter) {
this.add = add;
this.sub = sub;
this.counter = counter;
this.textView = textView;
}
}
【问题讨论】:
标签: android listview baseadapter