当前位置: 首页 > 知识库问答 >
问题:

我不能从另一个意图向我的RecycerView添加项

高弘光
2023-03-14

我有两个意图。主要活动:包含回收器视图,显示一些默认项以确保其工作。ArrayList被设置为Recycerer视图,它是包含这些默认项的列表。

//My item
public item(int id, int money, String date, String category, String 
description) {
    this.id = id;
    Money = money;
    Date = date;
    Category = category;
    Description = description;
}
//Building ArrayList
public Util(){
    Log.d(TAG, "Util: Start");
    if(IncomeItems==null){
        IncomeItems = new ArrayList<>();
        initIncomeItems();
    }        
}
private static void initIncomeItems() {
    Log.d(TAG, "initIncomeItems: initI");
    int Iid = 0
    int Money= 0;
    String Date = "";
    String Category= "";
    String Description = "";

     Iid++;
     IncomeItems.add(new item(Iid, 10000, "8-Jun-2019", "Salary", 
"Salary"));
}

//adding item to ArrayList
public boolean addIncomeItem(item Item){
    Log.d(TAG, "addIncomeItem: addI");
    return IncomeItems.add(Item);
}

//getting ArrayList
public static ArrayList<item> getIncomeItems() {
    Log.d(TAG, "getIncomeItems: getI");
    return IncomeItems;
}
//Recycler View in Main Activity
RVAdapter IncomeAdapter = new RVAdapter(this);
Util util = new Util();
MainIncomeRV.setAdapter(IncomeAdapter);
MainIncomeRV.setLayoutManager(new GridLayoutManager(this, 1));
IncomeAdapter.notifyDataSetChanged();
IncomeAdapter.setItems(util.getIncomeItems());
//Button in 2nd Activity
SubmitIncomeBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Date = date_day.getSelectedItem().toString() +"-" + 
date_month.getSelectedItem().toString() + "-" + 
date_year.getSelectedItem().toString();
            id++;
            item IncomeItem = new item(id, 
 Integer.parseInt(Money.getText().toString()), Date, 
IncomeCategories.getSelectedItem().toString(), 
Description.getText().toString());
            util=new Util();
            util.addIncomeItem(IncomeItem);
            Toast.makeText(IncomePage.this, IncomeItem.toString(), 
Toast.LENGTH_SHORT).show();
            Toast.makeText(IncomePage.this, 
String.valueOf(util.getIncomeItems().size()), Toast.LENGTH_SHORT).show();
            Log.d(TAG, "onClick: addI");
        }
    });

}

共有1个答案

田博远
2023-03-14

以下两点对您有效:

  • 您应该使用MainActivity中使用的util对象,而不是在第二个活动下的提交按钮中创建新的,因此将util对象传递给第二个活动。
  • 还将适配器对象传递给第二个活动,以便在添加项后调用NotifyDatasetChanged()函数。
 类似资料: