Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用viewholder在自定义listview适配器中未正确更新项_Java_Android_Listview_Android Viewholder - Fatal编程技术网

Java 使用viewholder在自定义listview适配器中未正确更新项

Java 使用viewholder在自定义listview适配器中未正确更新项,java,android,listview,android-viewholder,Java,Android,Listview,Android Viewholder,我正在使用viewholder处理自定义适配器列表视图。我在这里使用+和-按钮来增加和减少购物车项目。当我增加购物车中的第一个项目时,我在那里显示的文本视图中没有显示正确的增量值,并且没有正确更新增量值。在此我附上代码,请提供一些帮助 public class OrderListAdapter extends BaseAdapter { List<CartDetail> retrieveItems; Context ctx; ViewHolder viewHo

我正在使用viewholder处理自定义适配器列表视图。我在这里使用+-按钮来增加和减少购物车项目。当我增加购物车中的第一个项目时,我在那里显示的文本视图中没有显示正确的增量值,并且没有正确更新增量值。在此我附上代码,请提供一些帮助

public class OrderListAdapter extends BaseAdapter {
    List<CartDetail> retrieveItems;
    Context ctx;
    ViewHolder viewHolder;

    public OrderListAdapter(Context ctx,
                            ArrayList<CartDetail> rideDetails) {
        // TODO Auto-generated constructor stub
        this.retrieveItems = rideDetails;
        this.ctx = ctx;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return retrieveItems.size();

    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return retrieveItems.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(final int position, View convertView,
                        ViewGroup parent) {
        // TODO Auto-generated method stub

        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater) ctx
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.order_cart_item, null);
        }
        viewHolder = new ViewHolder();
        viewHolder.tvProductName = (TextView) convertView
            .findViewById(R.id.tvproductname);

        viewHolder.tvNumber.setText(retrieveItems.get(position).getmQuantity());
        minteger = Integer.parseInt(retrieveItems.get(position).getmQuantity());
        viewHolder.btnDecrease.setTag(convertView);
        viewHolder.btnDecrease.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (minteger == 1) {
                    minteger = minteger - 0;
                    viewHolder.tvNumber.setText("" + minteger);

                } else {
                    minteger = minteger - 1;

                    View temp = (View) v.getTag();
                    strI = String.valueOf(minteger);
                    String value = retrieveItems.get(position).getmCart();
                    String productid = retrieveItems.get(position).getmProductId();
                    String itemTotal = retrieveItems.get(position).getmItemTotal();
                    String unitPrice = retrieveItems.get(position).getmUnitPrice();
                    Float intPrice = Float.parseFloat(unitPrice);
                    finalTotalProductAmount = intPrice * minteger;
                    TextView tv = (TextView)temp.findViewById(R.id.txtView);
                    tv.setText(""+minteger);
                    mTask = new ReduceCartItem(value, productid, itemTotal).execute();
                }
            }
        });
        viewHolder.btnIncrease.setTag(convertView);
        minteger1=Integer.parseInt(retrieveItems.get(position).getmQuantity());
        viewHolder.btnIncrease.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                View temp = (View) v.getTag();

                minteger1 = minteger1+ 1;
                Log.e("integer",""+minteger1);
                strI = String.valueOf(minteger1);
                String value1 = retrieveItems.get(position).getmCartId();
                String productid1 = retrieveItems.get(position).getmProductId();
                String itemTotal1 = retrieveItems.get(position).getmItemTotal();
                String unitPrice1 = retrieveItems.get(position).getmUnitPrice();
                Float intPrice1 = Float.parseFloat(unitPrice1);
                finalTotalProductAmount = intPrice1 * minteger1;
                TextView tv = (TextView)temp.findViewById(R.id.txtView);
                tv.setText(""+minteger1);
                Log.e("posiiton", "" + retrieveItems.get(position).getmUnitPrice());
                mTask = new UpdateItemTask(value1, productid1, itemTotal1, viewHolder.tvTotalvalue).execute();
            }
        });

        strI = String.valueOf(minteger);
        return convertView;
    }

    public class ViewHolder {
        TextView tvProductName, tvProductID, tvUnitPrice, tvDiscount, tvTotal, tvUpdate, tvDelete, tvTotalvalue;
        ImageView imageView;
        EditText etQuantity;
        Button btnIncrease, btnDecrease;
        TextView tvNumber;

    }
}
公共类OrderListAdapter扩展了BaseAdapter{ 列出检索项; 上下文ctx; 持票人持票人; public OrderListAdapter(上下文ctx, ArrayList rideDetails){ //TODO自动生成的构造函数存根 this.retrieveItems=rideDetails; this.ctx=ctx; } @凌驾 public int getCount(){ //TODO自动生成的方法存根 返回retrieveItems.size(); } @凌驾 公共对象getItem(int位置){ //TODO自动生成的方法存根 返回retrieveItems.get(位置); } @凌驾 公共长getItemId(int位置){ //TODO自动生成的方法存根 返回0; } @凌驾 公共视图getView(最终整型位置,视图转换视图, 视图组(父级){ //TODO自动生成的方法存根 if(convertView==null){ LayoutInflater mInflater=(LayoutInflater)ctx .getSystemService(活动.布局\充气机\服务); convertView=mInflater.充气(R.layout.order\u cart\u item,空); } viewHolder=新的viewHolder(); viewHolder.tvProductName=(文本视图)convertView .findViewById(R.id.tvproductname); viewHolder.tvNumber.setText(retrieveItems.get(position.getmQuantity()); minteger=Integer.parseInt(retrieveItems.get(position.getmQuantity()); viewHolder.btnderence.setTag(convertView); viewHolder.btnderence.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ if(minteger==1){ minteger=minteger-0; viewHolder.tvNumber.setText(“+minteger”); }否则{ minteger=minteger-1; 视图温度=(视图)v.getTag(); strI=字符串.valueOf(minteger); String value=retrieveItems.get(position.getmCart(); 字符串productid=retrieveItems.get(position.getmProductId(); String itemTotal=retrieveItems.get(position.getmItemTotal(); 字符串单价=retrieveItems.get(position.getmUnitPrice(); Float intPrice=Float.parseFloat(单价); finalTotalProductAmount=intPrice*minteger; TextView tv=(TextView)temp.findViewById(R.id.txtView); tv.setText(“+minteger”); mTask=新的ReducePartItem(值、productid、itemTotal).execute(); } } }); viewHolder.btnIncrease.setTag(convertView); minteger1=Integer.parseInt(retrieveItems.get(position.getmQuantity()); viewHolder.btnIncrease.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ 视图温度=(视图)v.getTag(); minteger1=minteger1+1; Log.e(“整数”和“+minteger1”); strI=字符串.valueOf(minteger1); 字符串值1=retrieveItems.get(position.getmCartId(); 字符串productid1=retrieveItems.get(position.getmProductId(); String itemtottal1=retrieveItems.get(position.getmItemTotal(); 字符串unitPrice1=retrieveItems.get(position.getmUnitPrice(); Float intPrice1=Float.parseFloat(unitPrice1); finalTotalProductAmount=intPrice1*minteger1; TextView tv=(TextView)temp.findViewById(R.id.txtView); tv.setText(“+minteger1”); Log.e(“posiiton”,“+retrieveItems.get(position.getmUnitPrice()); mTask=new UpdateItemTask(值1、productid1、itemTotal1、viewHolder.tvTotalvalue).execute(); } }); strI=字符串.valueOf(minteger); 返回视图; } 公共类视图持有者{ text查看tvProductName、tvProductID、tvUnitPrice、TV折扣、tvTotal、tvUpdate、tvDelete、tvTotalvalue; 图像视图图像视图; 编辑文本数量; 按钮BTN增加,BTN减少; 文本视图tvNumber; } }
遵循此操作,我尝试过,但问题相同。您可以提供此新UpdateItemTask的代码。我认为您在这里获得的数量是相同的,minteger1=Integer.parseInt(retrieveItems.get(position.getmQuantity());