我正在创建一个列表视图,其中包含2个ImageView和一个TextView(以及其他一些东西)。两个ImageView是加号和减号图标,按下它们时,需要更新TextView中的数字。他们还需要触发代码来更新ListView下面的TextViews的总和。
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.basket_item, null);
holder.plus = (ImageView) convertView.findViewById(R.id.count_add);
holder.minus = (ImageView) convertView.findViewById(R.id.count_minus);
holder.counter = (TextView) convertView.findViewById(R.id.text_counter);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.id = position;
holder.counter.setId(position);
holder.counter.setText(count[position]);
holder.plus.setId(position);
holder.plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id = v.getId();
if (count[id] < 999) {
count[id]++;
totalcount++;
}
}
});
holder.minus.setId(position);
holder.minus.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int id = v.getId();
if (count[id] > 1) {
count[id]--;
totalCount--;
}
}
});
return convertView;
}
}
class ViewHolder {
ImageView plus;
ImageView minus;
TextView counter;
int id;
}
我相信,要更新TextView中的计数器,我需要以某种方式让我的持有者&#39;然而,在OnClickListner中,因为它没有被声明为final,所以我不能。
有更简单的方法可以做到这一点,还是我错过了一个技巧?
答案 0 :(得分:0)
尝试实现再次调用getView的notifyDataSetChanged()。然后,使textView无效。但我不完全确定需要在这里调用invalidate()。
public void onClick(View v) {
int id = v.getId();
if (count[id] > 1) {
count[id]--;
totalCount--;
notifyDataSetChanged();
holder.counter.invalidate();
}
}
});
答案 1 :(得分:0)
我不确定。我希望如此。尝试将此行粘贴在Onclick方法本身下。
“holder.counter.setText('YOUR TEXT totalcount');”