2017-12-20 8 views
0

하나의 활동에 채우는 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(); 
     } 

    }); 

입니다 활동 1에서 원래 arraylist로 업데이트되지 않았습니다.

이 문제를 해결하는 데 도움을주십시오.

미리 감사드립니다.

+0

대신 3 가지의 ArrayList를 만드는 Y 1의 – androidXP

+0

나는 다른 목적을 위해 3을 필요로한다, 다만 1의 삭제를 보여 주어 그래서 당신은 th를 얻는다 전자 아이디어. – Ticker

+0

활동 1에는 arraylist가 없기 때문에 고정 크기와 고정 값을 갖는 항상 정적 목록입니다. 당신이 활동 1에서 arraylist를 만든 다음 활동 2로 보내면 더 좋을 것입니다. – androidXP

답변

0

Intraent를 통해 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 
+0

코드 예제로 설명하십시오 – Ticker

+0

업데이트 된 답변 확인 – shravani

-1

그것을 만들 :

public static ArrayList<String> l1