Android listview按钮更改下一个位置的文本textview

Android listview按钮更改下一个位置的文本textview,android,listview,adapter,Android,Listview,Adapter,当我单击按钮更改当前项目的文本视图文本时,我的listview项目上有两个按钮和一个文本视图,但列表中最后一个项目的文本发生了更改。我在下面给出了我的适配器类,如果需要,可以询问更多信息。 非常感谢。 我需要帮助 public class CartAdapter extends BaseAdapter { Context context; LayoutInflater layoutInflater; List cartProImageListA,

当我单击按钮更改当前项目的文本视图文本时,我的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;
        }
    }

适配器和视图保持器的工作原理是重用相同的组件,而不是创建新的视图。因此,在视图持有者中,始终尝试使用该位置的适当值重置textview,或者在开始时清除databy setText(“”),适配器和视图持有者通过重用相同的组件而不是创建新视图来工作。因此,在您的视图中,holder始终尝试使用该位置的适当值重置textview,或者在开始时清除databy setText(“”)

我做了以下操作,但我的问题是,listview中最后一项的文本正在更改,而不是当前项的文本。查看:我做了以下操作,但我的问题是,listview中最后一项的文本正在更改,而不是当前项的文本。查看:仅直接更新视图是错误的。滚动列表时也会出现问题。您可以更新数据列表,并使用notifyDataSetChanged()更新ListView。我有一个博客:。希望能有帮助!直接只更新视图是错误的。滚动列表时也会出现问题。您可以更新数据列表,并使用notifyDataSetChanged()更新ListView。我有一个博客:。希望能有帮助!