繁体   English   中英

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

[英]Android OnClickListener to update text within same ListView row

我正在做一个包含(其中包括)2个ImageViews和一个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中的计数器,我需要以某种方式将我的“持有人”放入OnClickListner内,但是由于它没有被声明为final,所以我不能这样做。

有没有更简单的方法可以执行此操作,还是我在这里错过了一个窍门?

尝试实现再次调用getView的notifyDataSetChanged()。 然后使textView无效。 但我不确定是否需要在此处调用invalidate()。

  public void onClick(View v) {
     int id = v.getId();

     if (count[id] > 1) {
       count[id]--;
       totalCount--;
       notifyDataSetChanged(); 
       holder.counter.invalidate();
     }
   }
 });

我对此不确定,希望如此。 尝试将此行粘贴到Onclick方法本身下。

“ holder.counter.setText('YOUR TEXT totalcount');”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM