Я создаю представление списка, которое содержит (среди нескольких других вещей) 2 ImageViews и TextView. Два ImageViews представляют собой значки «плюс» и «минус», когда они нажимаются, им необходимо обновить номер внутри TextView. Им также необходимо вызвать код, который будет обновлять сумму текстовых элементов под списком ListView.Android OnClickListener для обновления текста внутри той же строки ListView
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, мне нужно каким-то образом получить свой «держатель» внутри OnClickListner, однако, поскольку он не объявлен как окончательный, я не могу.
Есть ли более простой способ сделать это, или я пропустил трюк здесь?
Вы не меняете текст в текстовом виде напрямую, из-за вида утилизации. что вы делаете, так это то, что вы изменяете базовые данные и запрашиваете обновление представления. – njzk2