我有一个Arraylist填充在一个活动中,但删除该arraylist的项目正在另一个活动中发生。那么我应该如何更新原始的ArrayList?
在活动1中:
FloatingActionButton show = (FloatingActionButton) findViewById(R.id.showB);
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
intent.putStringArrayListExtra("key", foo);
intent.putStringArrayListExtra("key2", foo2);
intent.putStringArrayListExtra("key3", foo3);
startActivity(intent);
}
});
在活动2中:
final ArrayList<String> list = getIntent().getStringArrayListExtra("key");
final ArrayList<String> list2 = getIntent().getStringArrayListExtra("key2");
final ArrayList<String> list3 = getIntent().getStringArrayListExtra("key3");
//活动2中的删除:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
AlertDialog.Builder adb=new AlertDialog.Builder(Main2Activity.this);
adb.setTitle("Delete?");
adb.setMessage("Are you sure you want to delete ?");
final int positionToRemove = position;
adb.setNegativeButton("Cancel", null);
adb.setPositiveButton("Yes", new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
list.remove(positionToRemove);
arrayAdapter.notifyDataSetChanged();
}});
adb.show();
}
});
现在它在活动2中成功删除,但在活动1中未更新为原始arraylist。
答案 0 :(得分:0)
不是通过Intent传递arraylists,而是在Singleton类中为arraylist创建一个全局变量,并从中访问arraylist。这将有助于从应用程序的任何位置轻松修改/更新arraylist。
public class MySingleton
{
private static MySingleton mSingleton;
public static ArrayList<String> myList = new ArrayList<String>;
public static MySingleton getInstance()
{
if(mSingleton == null)
mSingleton = new MySingleton();
else
return mSingleton;
}
}
使用在此单例类中声明的arraylist,无论你的应用程序在哪里
在您的活动中:
MySingleton.getInstance().myList; // add/update the list
答案 1 :(得分:-1)
制作:
public static ArrayList<String> l1