如何解决所有视图在recyclerview中的位置相同
这个问题已经在这里有了答案: 为什么我的ArrayList包含添加到列表中的最后一项的N个副本? (5个答案) 2年前关闭。 在我的Android应用中,我正在使用回收站视图来显示项目。
(注意:这不是重复的问题,因为我尝试了stackoverflow的许多答案,但没有解决方案。)
我的问题 显示重复项目的回收者视图。即使一个项目在源数据库中仅发生一次,它也会重复多次。
我检查了原因,并注意到Adapter类中的List对象在所有迭代中都返回相同的值。但是将List对象发送到适配器类的Fragment具有唯一值。
但是只有接收到List对象的适配器类包含重复项
我尝试过的解决方案
我检查了Stackoverflow,并在适配器类中添加了getItemId(int position)和getItemViewType(int position),但没有解决办法
我检查了数据库,并且列表视图发送类都没有重复的项目。
我的代码:
public CartAdapter(Context context,List<OrderMenuItem> menuList) {
this.menuList = menuList;
this.context=context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
if (viewType == 0) {
Log.d("TAG","onCreateViewHolder: "+"hii");
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View thali_cart_list = layoutInflater.inflate(R.layout.thali_cart_list,parent,false);
return new thali_cart_list_holder(thali_cart_list);
} else{
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View cart_list = layoutInflater.inflate(R.layout.cart_list,false);
return new cart_list_holder(cart_list);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder,int position) {
holder.setIsRecyclable(false);
Log.d("hjbghj","onBindViewHolder: "+position);
OrderMenuItem object = menuList.get(position);
Log.d("TAG","onBindViewHuyghkyolder: "+object.getName());
if (object != null) {
if(object.getCustomizeOptions()!=null){
/*Picasso.get()
.load(object.getImageURL())
.transform(new CircleTransform())
//.placeholder(R.drawable.placeholder) // optional
// .error(R.drawable.error) // optional
.resize(250,250) // optional
.into(((thali_cart_list_holder)holder).thali_food_pic);
((thali_cart_list_holder)holder).thali_item_description.setText(object.getDescription());*/
((thali_cart_list_holder)holder).thali_price.setText(""+object.getFullPrice());
((thali_cart_list_holder)holder).customise.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final BottomSheetDialog bt=new BottomSheetDialog(context,R.style.BottomSheetDialogTheme);
View view1=LayoutInflater.from(context).inflate(R.layout.cartbottomsheetlayout,null );
RadioGroup rdgrp=view1.findViewById(R.id.radio);
rdgrp.setOrientation(LinearLayout.VERTICAL);
for(int i=0;i<object.getCustomizeOptions().size();i++){
RadioButton rdbtn = new RadioButton(context);
Log.d("TAG","onClick: "+"hiiiiiiiiiiiiii");
rdbtn.setId(View.generateViewId());
rdbtn.setText("Radio " + object.getCustomizeOptions().get(0).getName());
rdbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("TAG","onClick: "+rdbtn.getText());
}
});
rdgrp.addView(rdbtn);
}
bt.setContentView(view1);
bt.show();
}
});
}
else {
((cart_list_holder)holder).cart_item_hlaf_price.setText("" + object.getHalfPrice());
((cart_list_holder)holder).cart_item_price.setText("" + object.getFullPrice());
// ((cart_list_holder)holder).cart_item_description.setText(object.getDescription());
((cart_list_holder)holder).cart_item_name.setText(object.getName());
/* *//* Picasso.get()
.load(object.getImageURL())
.transform(new CircleTransform())
//.placeholder(R.drawable.placeholder) // optional
// .error(R.drawable.error) // optional
.resize(250,250) // optional
*//* .into( ((cart_list_holder)holder).cart_food_pic);
*/ }
}
}
@Override
public int getItemCount() {
return menuList.size();
}
@Override
public int getItemViewType(int position) {
if(menuList.get(position).getCustomizeOptions()!=null){
return 0;
}else
return 1;
}
public static class cart_list_holder extends RecyclerView.ViewHolder {
public TextView cart_item_name;
public TextView cart_item_description;
public TextView cart_item_price;
public TextView cart_item_hlaf_price;
public Button cart_add_to_cart;
public ImageButton cart_plus;
public ImageButton cart_minus;
public TextView cart_count;
public ImageButton cart_hlaf_plus;
public ImageButton cart_hlaf_minus;
public TextView cart_hlaf_count;
public ImageView cart_food_pic;
public ConstraintLayout layout;
public TextView cart_full_price;
public cart_list_holder(View cart_list) {
super(cart_list);
this.cart_item_name = (TextView) cart_list.findViewById(R.id.cart_item_name);
this.cart_item_description = (TextView) cart_list.findViewById(R.id.thali_item_description);
this.cart_item_price = (TextView) cart_list.findViewById(R.id.cart_item_full_price);
this.cart_item_hlaf_price = (TextView) cart_list.findViewById(R.id.thali_menu_price);
this.cart_full_price = (TextView) cart_list.findViewById(R.id.cart_full_price);
this.cart_plus = (ImageButton) cart_list.findViewById(R.id.cart_plus);
this.cart_minus = (ImageButton) cart_list.findViewById(R.id.cart_minus);
this.cart_count = (TextView) cart_list.findViewById(R.id.cart_count);
this.cart_hlaf_plus = (ImageButton) cart_list.findViewById(R.id.cart_hlaf_plus);
this.cart_hlaf_minus = (ImageButton) cart_list.findViewById(R.id.cart_hlaf_minus);
this.cart_hlaf_count = (TextView) cart_list.findViewById(R.id.cart_hlaf_count);
this.cart_food_pic = (ImageView) cart_list.findViewById(R.id.thali_food_pic);
this.layout = cart_list.findViewById(R.id.thali_cart_list);
}
}
public static class thali_cart_list_holder extends RecyclerView.ViewHolder {
ImageView thali_food_pic;
TextView thali_cart_name;
TextView thali_item_description;
TextView cart_thali_price;
TextView thali_price;
TextView customise;
public ConstraintLayout layout;
public thali_cart_list_holder(View thali_cart_list) {
super(thali_cart_list);
this.thali_food_pic = thali_cart_list.findViewById(R.id.thali_food_pic);
this.thali_cart_name = thali_cart_list.findViewById(R.id.cart_thali_name);
this.thali_item_description = thali_cart_list.findViewById(R.id.thali_item_description);
this.cart_thali_price = thali_cart_list.findViewById(R.id.cart_thali_price);
this.thali_price = thali_cart_list.findViewById(R.id.thali_menu_price);
this.customise = thali_cart_list.findViewById(R.id.customise);
this.layout = thali_cart_list.findViewById(R.id.thali_cart_list);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。