Android OnClickListener用于更新同一ListView行中的文本

时间:2013-12-02 16:04:14

标签: java android listview onclicklistener

我正在创建一个列表视图,其中包含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,所以我不能。

有更简单的方法可以做到这一点,还是我错过了一个技巧?

2 个答案:

答案 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');”