我正在显示Sqlite
中RecyclerView
按钮的AddToCart
数据库中的数据。单击此按钮后,该项目的数据将存储在sqlite
数据库中。 Recyclerview
在可见时加载数据。问题是当recycelerview
重载数据时,它给了我奇怪的行为。未在购物车中的商品在购物车中实际显示。 sqlite
数据库中没有问题,但recyclerview
中没有问题。当列表中的项目较少并且不需要重新加载recyclerview
中的数据时,则不会显示这种行为。它仅在滚动时需要重新加载recyclerview
数据(即加载更多数据)时显示此行为。 onBindViewHolder
是负责任的,因为它每次在屏幕上可见时都会重新加载数据。当不需要recyclerview
重新加载数据时,此代码可以在较少的数据上正常工作。
final String image = list.get(position).getImage();
final String description = list.get(position).getDescriptionn();
final String quantity = list.get(position).getQuantity();
final String price = list.get(position).getPricee();
final String measuring_unit = list.get(position).getMeasuring_unit();
String s = price + "Rs";
viewHolder.pricee.setText(s);
viewHolder.product_name.setText(name);
String quantityAndMeasuringunit = quantity+" "+measuring_unit;
viewHolder.measuring_unit.setText(quantityAndMeasuringunit);
Picasso.get()
.load(image)
.placeholder(R.drawable.dairy1)
.error(R.drawable.dairy2)
.into(viewHolder.sriv);
Cursor c = dh.getCartDetailItemForUpdatingAddToCartButtonBySub_cat_name(id); //it checks if MilkAdapter2 items are present in cart table
if (c != null && c.moveToFirst()) {
do {
String product_id = c.getString(c.getColumnIndex("cart_detail_id"));
Log.e(TAG, "getCartDetailItemForUpdatingAddToCartButtonBySub_cat_name "+product_id);
if (id.equals(product_id)) { // if present just update the AddToCart status
String product_quantity = c.getString(c.getColumnIndex("AddToCartQuantity"));
Log.e(TAG, "getCartDetailItemForUpdatingAddToCartButtonBySub_cat_name "+product_quantity);
Log.e(TAG, "ViewHolder " + " " + product_id);
//Log.e(TAG, "inside for loop "+name + " " + quantity);
viewHolder.textView.setVisibility(View.GONE);
viewHolder.linearLayout.setVisibility(View.VISIBLE);
viewHolder.digit.setText(product_quantity + "");
}
} while (c.moveToNext());
c.close();
}
viewHolder.sriv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(context, Item_detail.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("id",list.get(holder.getAdapterPosition()).getItem_id());
context.startActivity(i);
}
});
ViewHolder类
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setVisibility(View.GONE);
linearLayout.setVisibility(View.VISIBLE);
String id = list.get(getAdapterPosition()).getItem_id();
String image = list.get(getAdapterPosition()).getImage();
String price = list.get(getAdapterPosition()).getPricee();
String description = list.get(getAdapterPosition()).getDescriptionn();
String quantity = list.get(getAdapterPosition()).getQuantity();
String name = list.get(getAdapterPosition()).getName();
String measuring_unit = list.get(getAdapterPosition()).getMeasuring_unit();
String sub_cat_name = list.get(getAdapterPosition()).getSub_cat_name();
Log.e(TAG, name);
Log.e(TAG, sub_cat_name);
InsertInCart.InsertInCartDatabase(context, Constant.vegetable_category, id, name, image, price, description, quantity, measuring_unit, sub_cat_name);
}
});
我认为它更像是死锁问题,因为如果其他项目也进入条件,它就会进入。任何帮助将不胜感激。谢谢。
我只单击了第一项的AddToCart
按钮。
当我滚动到末尾并回到顶部时,第二项addtocart
被触发,但我没有单击。
滚动到倒数第二秒时,最后一个addtocart
按钮被触发。