2012-11-30 16 views
5

içinde güncellendikten sonra ben iki basit Etkinlikleri var - Activity1: Bir Array Activity2 gelen ListView: Yenile ListView başka Faaliyet

Ben Activity1 için Activity2 değeri ve geri dönen düzenlemek Activity1

tıklandığında satır düzenleme için EditText, ListView, yeni değeri yeniden yüklemez.

Activity2'den döndüğümde veya Activity1'i yeniden başlattığımda veya listeyi güncelleyecek bir şey olduğunda ListView'i yenilemek istiyorum.

Kodum:

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 String Dizisine dönüştürür sadece yöntemdir. Activity2 yeni verileri SharedPreferences'ta kaydeder ve Activity1 bunu okuyabilir (yeni verilerle). "Ana etkinliğe" (Activity1 değil) dönüp Activity1'e geri dönersem - yeni veriler gösterilir, ancak hemen Activity2'den döndüğümde bu verilerin güncellenmesini istiyorum.

loadArrays() yöntemi: pastebin.com/MHwNC0jK

şimdiden teşekkür!

+0

kodunu() İstediğim bu daha beni biraz farklı veriler verip sonuçlanacaktır – Shakti

cevap

10

Tek fazla zaman alın, startActivityForResult()

ile ikinci Etkinliği başlatmak

İkinci Aktivitede, EditText'a girdikten sonra, muhtemelen bir düğme vardır. Ve

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

o düğme çağrısının onClick, içinde Artık ilk Aktivite gel ve burada onActivityResult() geri arama uygulamak zorunda. Bu amacın ekstralarından verileri ayıklayabilir ve dizinizdeki ilgili öğeyi ayarlayabilir ve notifyDataSetChanged() numaralı telefonu arayabilirsiniz.

İdeal olarak bunu nasıl yapmalısınız.

Eğer startActivityForResult() şu bağlantıyı deneyin nasıl kullanılacağı hakkında daha fazla bilgi isterlerse - loadArrays için http://manisivapuram.blogspot.in/2011/06/how-to-use-startactivityforresult.html

+0

daha iyi anlamak yardımcı olabilir, ancak ben olacak kontrol edecek. – Dennis

+2

Çok teşekkür ederim! Bu işe yaradı! – Dennis

-3

Gloul Değişkenini ve kullanılan statik arraylist olarak tümcecik bildirin.

1

1) İlk Aktivite öğeyi tıklayarak On referans ListView

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

2) oluştur adaptör değiştirilen değerler

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 

       } 
      });