如何解决在recyclerview中动态地将项目添加到列表中并复制到片段中的列表中
我正在通过输入对话框将项目添加到Recyclerview适配器的列表中。当用户在文本字段中输入值并单击“提交”按钮时,我希望将输入的值添加到片段中声明为公共的列表中,这样,如果我转到该片段并单击 showListSize 按钮,我应该看到列表的大小(在片段中)大于0;
在RecyclerView的列表中添加项目是可行的,但是大小不能超过1。我可能做错了什么。
这是示例代码:
//Adapter,constructor and variables declaration
//on create viewholder
@Override
public void onBindViewHolder(ViewHolder holder,final int position) {
List<Item2> valuesList = new ArrayList<Item2>(child.get(groupname));
childSize = valuesList.size();
Log.i("List size",String.valueOf(childSize));
if (childSize > 0){
//final String childText = (String) getChild(groupPosition,position);
final Item2 item = valuesList.get(position);
holder.name.setText(item.getItemName());
//holder.itemImage.setImageResource(Integer.parseInt(item.getImageUrl()));
holder.price.setText(String.valueOf(item.getPrice()));
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.select_quantity);
Button button_submit = dialog.findViewById(R.id.btn_submit);
final EditText edQuantity = dialog.findViewById(R.id.txt_quantity);
edQuantity.setText("0");
button_submit.setOnClickListener(new View.OnClickListener() {
float totalPrice = 0;
@Override
public void onClick(View view) {
String quantity = edQuantity.getText().toString();
totalPrice = Float.parseFloat(quantity) * Float.parseFloat(item.getPrice());
myLocal.add(new CartItem(quantity,item.getItemName(),item.getPrice(),String.valueOf(totalPrice)));
AllProducts myProducts = new AllProducts(); //this is the fragment
myProducts.theSelected.add(new CartItem(quantity,String.valueOf(totalPrice)));
Log.i("size(Recycler)",String.valueOf(myProducts.theSelected.size())); //this is ok returns 1
dialog.dismiss();
}
});
dialog.show();
所有产品片段
public List<CartItem> theSelected = new ArrayList<CartItem>();//list declaration
btnShowListSize.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("list(AllProducts)",String.valueOf(theSelected.size()));//returns 0
}
});
解决方法
我这样定义了一个全局ArrayList
private List<Items> selectedItems = new ArrayList<>();
然后是一种添加项目的方法,该方法仍在全局类中
public void addItems(Item item) {
this.selectedItems.add(item);
}
然后在项目中某处的某个班级中:
final Globals myGlobals = Globals.getInstance();
Item myItem = new Item("var1","var2","var3");
myGlobals.addItems(myItem);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。