如何在活动B中的onBackPressed()操作后更新列表值,并将此更改保存在活动A的列表中。
活动A:
Intent order = new Intent(getApplicationContext(), OrderActivity.class);
Bundle args = new Bundle();
args.putSerializable("order", (Serializable) orderPositions);
order.putExtra("order", args);
startActivity(order);
活动B:
@Override
public void onBackPressed()
{
new AlertDialog.Builder(this)
.setCancelable(false)
.setMessage("Are you sure you want to cancel?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
menuActivity.setOrderPositions(orderPositions);
finish();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
})
.setNegativeButton("No", null)
.show();
}
我还在活动A中列出了setter(menuActivity.setOrderPositions(orderPositions);),但之后我有了null List。 任何解决方案?
答案 0 :(得分:1)
首次活动需要startActivityForResult
,setResult(Activity.RESULT_OK, <YOUR_LIST>)
之前需要finish()
第二次活动。在第一个活动中,使用onActivityResult
方法获取数据。
但我建议使用一些存储(例如,数据库)来存储您的数据并从任何活动接受它。
或者您可以创建一些单例并将列表存储在实例中。
答案 1 :(得分:1)
呼叫 “adapter.notifyDataSetChanged();” on活动A的onResume()方法 注意:adapter是我们为listview定义的adpater类。它会刷新列表视图。我在我的情况下使用它,它对我有用
答案 2 :(得分:0)
我制定了隐含重复位置数量并删除重复位置的方法。
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void checkForDuplicates(ArrayList<OrderSchema> orderPositions)
{
for(int i = 0; i < orderPositions.size(); i++)
{
for (int j = i+1; j < orderPositions.size(); j++)
{
if (Objects.equals(orderPositions.get(i).getPositionID(), orderPositions.get(j).getPositionID()) && (i != j))
{
Integer count = orderPositions.get(i).getCount();
count += 1;
orderPositions.get(i).setCount(count);
orderPositions.remove(j);
j = j -1;
}
}
}
}