繁体   English   中英

在回收站视图项目中单击增量按钮时,如何停止在回收站视图中自动向上滚动?

[英]How to stop automatic scroll up in recycler view when increment button is clicked in recycler view item?

当我在回收站视图中单击递增/递减数量按钮时,回收站视图会自动向上滚动。 如何避免自动向上滚动? 下面是我的代码。 请帮我。

这是我在回收站视图适配器设置的主要活动中的代码

private void loadCartItems() {
        //init list
        //get orders

        shopNameTv.setText(shopname);

        cartList = new ArrayList<>();
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
        reference.child(firebaseAuth.getUid()).child("Cart")

                .addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        //clear list before adding item
                        cartList.clear();

                        for (DataSnapshot ds : dataSnapshot.getChildren()) {

                            CartModel cartModel = ds.getValue(CartModel.class);
                            Map<String, Object> map = (Map<String, Object>) ds.getValue();

                            Object price = map.get("Item_Price");
                            int cost = Integer.parseInt(String.valueOf(price));

                            allTotalPrice +=  cost ;
                            sTotalTv.setText("₹" +  allTotalPrice);
                            allTotalPriceTv.setText("₹" + (allTotalPrice + Integer.parseInt(deliveryFee.replace("₹", ""))));
                            cartList.add(cartModel);

                        }

                        LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
                        cartItemsRv.setLayoutManager(mLayoutManager);

                        cartItemsRv.setItemAnimator(null);
                        //setup adapter
                        cartAdapter = new CartAdapter(CartActivity.this, cartList);
                        //set adapter
                        cartItemsRv.scrollToPosition(cartList.size());

                      

                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {

                    }
                });

        //allTotalPrice = allTotalPrice + Integer.parseInt(price);
        dFeeTv.setText("₹" + deliveryFee);
        sTotalTv.setText("₹" +  allTotalPrice);
        allTotalPriceTv.setText("₹" + (allTotalPrice + Integer.parseInt(deliveryFee.replace("₹", ""))));


    } 

这是我的适配器代码


if (Integer.parseInt(stk) == 0) {
            Toast.makeText(context, "Product Stock Limit reached", Toast.LENGTH_SHORT).show();
        }
        else {

        holder.incrementBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                int number = 0;
                number = Integer.parseInt(holder.itemQuantityTv.getText().toString().trim());
                number++;

                //((CartActivity)context).reload();

                holder.itemQuantityTv.setText(""+number);
                int pe = number * Integer.parseInt(holder.itemPriceEachTv.getText().toString().trim());
                holder.itemPriceTv.setText(""+pe);

                double tx = Double.parseDouble((((CartActivity)context).allTotalPriceTv.getText().toString().trim().replace("₹","")));
                double totalPrice = tx + Double.parseDouble(cartModel.getItem_Price().replace("₹",""));
                double deliveryFee = Double.parseDouble((((CartActivity)context).deliveryFee.replace("₹","")));
                double sTotalPrice = Double.parseDouble(String.format("%.0f", totalPrice));
                ((CartActivity)context).allTotalPrice = 0;
                ((CartActivity)context).sTotalTv.setText("₹"+String.format("%.0f", sTotalPrice));
                ((CartActivity)context).allTotalPriceTv.setText("₹"+String.format("%.0f", Double.parseDouble(String.format("%.0f", sTotalPrice))));


                HashMap<String, Object> hashMap = new HashMap<>();
                hashMap.put("Item_Price", "" + pe);
                hashMap.put("Item_Quantity", "" + number);
                hashMap.put("Available_Stock", "" + availableStock);

                //update db
                DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
                ref.child(firebaseAuth.getUid()).child("Cart").child(cartModel.getItem_PID()).updateChildren(hashMap)
                        .addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {
                                //db updated

                              //  Toast.makeText(context, "Cart updated", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                //failed updating db
                                Toast.makeText(context, "Cart not updated", Toast.LENGTH_SHORT).show();
                            }
                        });

                //To update stock value in cart
                int stk_number = 0;
                stk_number = Integer.parseInt(holder.stock.getText().toString().trim());

                if (stk_number >0 ){
                    stk_number--;

                    holder.stock.setText(""+stk_number);

                    HashMap<String, Object> hashMap1 = new HashMap<>();
                    hashMap1.put("Stock_left", "" + stk_number);

                    //update db
                    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
                    reference.child(firebaseAuth.getUid()).child("Cart").child(cartModel.getItem_PID()).updateChildren(hashMap1)
                            .addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    //db updated
                                 //   Toast.makeText(context, "Cart updated", Toast.LENGTH_SHORT).show();
                                }
                            })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    //failed updating db
                                    Toast.makeText(context, "Cart not updated", Toast.LENGTH_SHORT).show();
                                }
                            });
                }
                else {
                    stk_number = 0;
                }

            }
        });
        }

每当我单击回收器视图项中的递增/递减按钮时,回收器视图会自动向上滚动。 如果我需要再次增加,我每次都需要再次向下滚动。 那么,如何停止这种自动向上滚动并使其保持在同一位置。

成功加载和填充Adapter后,您必须删除ValueEventListener 否则,您会在更新值后收到更新事件。 这将创建一个滚动到顶部的新Adapter

如果您只想读取数据库一次,可以使用.get()

mDatabase.child("users").child(userId).get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (!task.isSuccessful()) {
            Log.e("firebase", "Error getting data", task.getException());
        }
        else {
            Log.d("firebase", String.valueOf(task.getResult().getValue()));
        }
    }
});

来源: https ://firebase.google.com/docs/database/android/read-and-write#read_data_once

在你的情况下:

reference.child(firebaseAuth.getUid()).child("Cart").get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
     ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM