2012-11-30 3 views
5

에 업데이트 한 후 나는 두 가지 간단한 활동이 - activity1에 : 배열 activity2에에서의 ListView : 새로 고침 ListView에 다른 활동

내가 activity1에에 activity2에있는 값과 반환을 편집 activity1에

에서 클릭 한 행을 편집 글고 치기를, ListView 새 값을 다시로드하지 않습니다.

Activity2에서 돌아 오거나 Activity1을 다시 시작하거나 목록을 업데이트 할 때 ListView를 새로 고칩니다.

내 코드 :

static ArrayAdapter<String> dataAdapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      // Loading the values to list array 
     String[][] fulllist = loadArrays(); 
     String[] list = new String[fulllist.length]; 
     for(int i = 0; i<fulllist.length; i++) { 
      list[i] = fulllist[i][1]; 
      } 
      // -------------------------------- 

      dataAdapter = new ArrayAdapter<String>(this, 
           android.R.layout.simple_list_item_1, 
           list); 
      setListAdapter(dataAdapter); 
      } 
@Override 
public void onResume() { 
     super.onResume(); 
     // Loading the values to list array 
     String[][] fulllist = loadArrays(); 
     String[] list = new String[fulllist.length]; 
     for(int i = 0; i<fulllist.length; i++) { 
      list[i] = fulllist[i][1]; 
      } 
     // -------------------------------- 

     dataAdapter = new ArrayAdapter<String>(this, 
          android.R.layout.simple_list_item_1, 
          list); 
     dataAdapter.notifyDataSetChanged(); 
} 

loadArrays는() 된 SharedPreferences에서 문자열 배열로 변환 단지 방법이다. Activity2는 SharedPreferences에 새 데이터를 저장하고 Activity1은 새 데이터로 읽을 수 있습니다. "주 활동"(Activity1이 아닌)으로 돌아가서 Activity1로 돌아 왔을 때 - 새로운 데이터가 표시되었지만 Activity2에서 즉시 반환하면이 데이터가 업데이트되기를 원합니다.

loadArrays() 메소드 : pastebin.com/MHwNC0jK

잘 부탁드립니다!

+0

코드를() 이것은 내가 원하는 것보다 나에게 조금 다른 데이터를주고됩니다 – Shakti

답변

10

에 한번 더 가져 오기 startActivityForResult()

과 두 번째 작업을 시작합니다

그리고 두 번째 활동에서 EditText을 입력 한 후 버튼이있을 것입니다. 그리고

intent.putExtra("edittextvalue", findViewById(R.id.edittext).getText().toString()); 
setResult(RESULT_OK, intent); 
finish(); 

그 버튼 호출 onClick, 지금 당신은 당신의 첫번째 활동에 다시 와서 당신은 여기 onActivityResult() 콜백을 구현해야한다. 해당 인 텐트의 엑스트라에서 데이터를 추출하고 배열의 해당 항목을 설정하고 notifyDataSetChanged()으로 전화 할 수 있습니다.

이것은 이상적으로 어떻게해야하는지입니다.

당신에 startActivityForResult()이 링크하려고 사용하는 방법에 대한 자세한 정보를 원하는 경우 - loadArrays에 대한 http://manisivapuram.blogspot.in/2011/06/how-to-use-startactivityforresult.html

+0

를 더 잘 이해하는 데 도움하지만합니다 그것을 확인합니다. – Dennis

+2

대단히 감사합니다! 이것은 효과가있다! – Dennis

-3

풀리스트를 Globle Variable 및 선언 된 정적 arraylist로 선언하십시오.

1

1) 첫 번째 활동에서 항목을 클릭에 참조 목록보기

mListView = (ListView)findViewById(R.id.auto_listview); 

2) 만들기 어댑터에게 변경된 값

MyAdapter myAdapter = new MyAdapter(getApplicationContext(), 
            R.layout.locations_list_item_layout,dataArray; 
mListView.setAdapter(myAdapter); 

setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

       public void onItemSelected(AdapterView<?> adapterView, 
         View view, int i, long l) { 

myAdapter = new MyAdapter(getApplicationContext(), 
    //pass changed values vlues array        R.layout.locations_list_item_layout,dataArray; 
mListView.setAdapter(myAdapter); 

} 

       public void onNothingSelected(AdapterView<?> arg0) { 
        // TODO Auto-generated method stub 

       } 
      });