当我单击按钮更改当前项目的文本视图文本时,我的listview项目上有两个按钮和一个文本视图,但是列表中最后一项的文本发生了变化。我给了我的适配器类如果需要,可以在下面询问更多信息。 谢谢。 需要帮助。
public class CartAdapter extends BaseAdapter {
Context context;
LayoutInflater layoutInflater;
List cartProImageListA, cartProNameListA, cartProQuntListA, cartUnitPriceListA, cartIdlListA, cartpriceListA;
ViewHolder viewHolder;
int quantity = 0;
customButtonListener customListner;
int Position;
public interface customButtonListener {
public void onButtonClickListner(int position);
}
public void setCustomButtonListner(customButtonListener listener) {
this.customListner = listener;
}
public CartAdapter(Context context, List cartIdList, List cartProImageList, List cartProNameList, List cartProQtyList,
List cartUnitPriceList, List cartPriceList) {
this.context = context;
this.cartIdlListA = cartIdList;
this.cartProImageListA = cartProImageList;
this.cartProNameListA = cartProNameList;
this.cartProQuntListA = cartProQtyList;
this.cartUnitPriceListA = cartUnitPriceList;
this.cartpriceListA = cartPriceList;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return cartProNameListA.size();
}
@Override
public Object getItem(int i) {
return cartProNameListA.get(i).toString();
}
@Override
public long getItemId(int position) {
return position;
}
class ViewHolder {
TextView cartProNameTextView, cartStockTextView, cartProPriTextView, cartprice;
ImageView cartProImageView;
Button plusBtnId, minusBtnId, cartRemoTextView;
}
/**
* Notifies the attached observers that the underlying data has been changed
* and any View reflecting the data set should refresh itself.
*/
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
view = layoutInflater.inflate(R.layout.confirmordercartview, null);
viewHolder = new ViewHolder();
viewHolder.cartProNameTextView = (TextView) view.findViewById(R.id.cartProNameTextViewId);
viewHolder.cartStockTextView = (TextView) view.findViewById(R.id.cartProQuntTextViewId);
viewHolder.cartProPriTextView = (TextView) view.findViewById(R.id.cartProPriceTextViewId);
viewHolder.cartRemoTextView = (Button) view.findViewById(R.id.cartRemovTextViewId);
viewHolder.cartprice = (TextView) view.findViewById(R.id.cartPrototalPriceTextViewId);
viewHolder.cartProImageView = (ImageView) view.findViewById(R.id.cartProImageImageViewId);
viewHolder.plusBtnId = (Button) view.findViewById(R.id.plusBtnId);
viewHolder.minusBtnId = (Button) view.findViewById(R.id.minusBtnId);
viewHolder.plusBtnId.setTag(position);
viewHolder.plusBtnId.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
quantity++;
Position = (Integer) view.getTag();
viewHolder.cartStockTextView.setText(quantity + "");
}
});
viewHolder.minusBtnId.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (quantity > 0) {
quantity--;
viewHolder.cartStockTextView.setText(quantity + "");
}
}
});
try
{
viewHolder.cartProNameTextView.setText(cartProNameListA.get(position).toString());
viewHolder.cartProPriTextView.setText("Unit Price: " + Globle.toTakeTwoDigitAfterDecimal(cartUnitPriceListA.get(position).toString()));
Glide.with(context).load("URL" + cartProImageListA.get(position).toString()).into(viewHolder.cartProImageView);
viewHolder.cartStockTextView.setText(cartProQuntListA.get(position).toString());
viewHolder.cartprice.setText("Price: " + cartpriceListA.get(position).toString());
viewHolder.cartRemoTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (customListner != null) {
customListner.onButtonClickListner(position);
}
}
});
} catch (
Throwable EE)
{
Log.e("Throwable", "" + EE);
}
return view;
}
}
答案 0 :(得分:0)
适配器和视图持有者通过重用相同的组件而不是创建新视图来工作。因此,在您的视图中,持有者总是尝试使用该位置的适当值重置textview,或者只是在最初清除数据集setText("")