如何在删除时更新另一个活动中的arraylist?

时间:2017-12-20 20:16:21

标签: java android arraylist

我有一个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。

2 个答案:

答案 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