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

时间:2017-06-02 06:05:43

标签: android listview adapter

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

1 个答案:

答案 0 :(得分:0)

适配器和视图持有者通过重用相同的组件而不是创建新视图来工作。因此,在您的视图中,持有者总是尝试使用该位置的适当值重置textview,或者只是在最初清除数据集setText("")