Android listview按钮更改下一个位置的文本textview
当我单击按钮更改当前项目的文本视图文本时,我的listview项目上有两个按钮和一个文本视图,但列表中最后一个项目的文本发生了更改。我在下面给出了我的适配器类,如果需要,可以询问更多信息。 非常感谢。 我需要帮助Android listview按钮更改下一个位置的文本textview,android,listview,adapter,Android,Listview,Adapter,当我单击按钮更改当前项目的文本视图文本时,我的listview项目上有两个按钮和一个文本视图,但列表中最后一个项目的文本发生了更改。我在下面给出了我的适配器类,如果需要,可以询问更多信息。 非常感谢。 我需要帮助 public class CartAdapter extends BaseAdapter { Context context; LayoutInflater layoutInflater; List cartProImageListA,
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;
}
}
适配器和视图保持器的工作原理是重用相同的组件,而不是创建新的视图。因此,在视图持有者中,始终尝试使用该位置的适当值重置textview,或者在开始时清除databy setText(“”),适配器和视图持有者通过重用相同的组件而不是创建新视图来工作。因此,在您的视图中,holder始终尝试使用该位置的适当值重置textview,或者在开始时清除databy setText(“”)我做了以下操作,但我的问题是,listview中最后一项的文本正在更改,而不是当前项的文本。查看:我做了以下操作,但我的问题是,listview中最后一项的文本正在更改,而不是当前项的文本。查看:仅直接更新视图是错误的。滚动列表时也会出现问题。您可以更新数据列表,并使用notifyDataSetChanged()更新ListView。我有一个博客:。希望能有帮助!直接只更新视图是错误的。滚动列表时也会出现问题。您可以更新数据列表,并使用notifyDataSetChanged()更新ListView。我有一个博客:。希望能有帮助!