2017-12-20 19 views
0

私は1つのアクティビティに取り込まれるArraylistを持っていますが、そのarraylistのアイテムの削除は別のアクティビティで行われています。では、元のArrayListをどのように更新すればよいですか?活動1では削除時の別のアクティビティでarraylistを更新する方法

活動2では
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); 

     } 
    }); 

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

代わりに3異なるのArrayListを作成するY 1の – androidXP

+0

私は別の目的のために3が必要です、ちょうど1つの削除を示したので、アイデア。 – Ticker

+0

アクティビティ1にはarraylistがありません。固定サイズと固定値を持つ常に静的なリストです。それはあなたが活動1でarraylistを作成し、活動2にそれを送るなら、より良いでしょう。 – androidXP

答えて

0

arraylistsをIntentで渡す代わりに、シングルトンクラスで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; 
    } 
} 

任意の場所あなたの活動に

あなたのアプリケーションでこのシングルトンクラスで宣言された配列リストを使用します。

MySingleton.getInstance().myList; // add/update the list 
+0

コード例で説明してください – Ticker

+0

私の更新された答えをチェックしてください – shravani

-1

はそれを作る:

public static ArrayList<String> l1 
関連する問題