我有两个意图。 主要活动:包含“回收者视图”,显示一些默认项目以确保其有效。 ArrayList设置为“回收者视图”,即包含这些默认项目的列表。
第二个活动:一个按钮,它将在同一页面上收集数据并将数据放入对象中,该对象将被添加到Arraylist中,该列表设置为Main Activity的“回收者视图”。
我做了一些Toast消息,以确认第二活动中的对象已添加到ArrayList中。
//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;
}
然后我创建了一个类来控制我的ArrayList
//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;
}
我在主活动中将ArrayList设置为RecyclerView
//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());
在第二个活动中,我有一个用于通过从用户获取数据来创建新项目的按钮。(我在这里跳过了一些Widget初始化代码)。最后,我将该项目添加到ArrayList中,该列表设置为Main Activity中的Recycler View。
//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");
}
});
}
没有发生错误,但是不能将第二活动中创建的项目(IncomeItem)添加到主活动中。
我希望当我返回主活动时,该项目将显示在“回收者”视图中。我使用返回按钮返回到主活动是否有问题?
答案 0 :(得分:0)
以下两点对您有用:
答案 1 :(得分:0)
这就是它应该如何工作的。首先在您的arrayList
中创建一个2ndActivity
。
ArrayList<Item> str = new ArrayList<Item>();
在SubmitIncomeBtn中,
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());
str.add(IncomeItem) // add IncomeItem to arrayList
}
});
在2ndActivity中,您需要具有以下代码才能将arrayList传递给MainActivity。
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("mylist", str);
setResult(1, intent);
}
最后在MainActivity
中,添加以下代码以从2ndActivity接收数据
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK) {
ArrayList<Item> myList = (ArrayList<Item>) getIntent().getSerializableExtra("mylist");
}
}
}