2012-11-30 18 views
5

Ich habe zwei einfache Tätigkeiten - Activity1: Listview aus einem Array Activity2: EditText zur Bearbeitung der angeklickt Zeile in Activity1Refresh Listview, nachdem sie in einer anderen Aktivität Aktualisierung

Wenn ich den Wert in Activity2 bearbeiten und die Rückkehr zu Activity1, Der ListView lädt den neuen Wert nicht neu.

Ich möchte die ListView aktualisieren, wenn ich von Activity2 zurückkehren oder Activity1 oder etwas fortsetzen, die die Liste aktualisieren wird.

My Code:

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() ist nur Verfahren, die von SharedPreferences zu String Array umwandelt. Activity2 speichert die neuen Daten in SharedPreferences und dann kann Activity2 sie lesen (mit den neuen Daten). Wenn ich zur "Hauptaktivität" (es ist nicht Aktivität1) zurückkehrt und dann zu Aktivität1 zurückkomme - die neuen Daten werden angezeigt, aber ich möchte, dass diese Daten aktualisiert werden, wenn ich sofort von Aktivität2 zurückkomme.

loadArrays() -Methode: pastebin.com/MHwNC0jK

Sie im Voraus dankend!

+0

Code für loadArrays() wird besser helfen – Shakti

Antwort

10

Auf das Produkt in der ersten Aktivität klicken, starten Sie Ihre zweite Aktivität mit startActivityForResult()

Und dann in Second Activity, nach der Eingabe in EditText, gibt es wahrscheinlich eine Schaltfläche. Und in onClick diese Taste Anruf,

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

Jetzt kommen Sie zurück zu Ihrer ersten Aktivität und hier haben Sie onActivityResult() Rückruf zu implementieren. Sie können Daten aus den Extras dieser Absicht extrahieren und das entsprechende Element in Ihrem Array setzen und notifyDataSetChanged() aufrufen.

Dies ist ideal, wie Sie es tun sollten.

Wenn Sie mehr Informationen zu wollen, wie startActivityForResult() verwenden Sie diesen Link versuchen - http://manisivapuram.blogspot.in/2011/06/how-to-use-startactivityforresult.html

+0

zu verstehen Das bin ich ein wenig anders Daten geben und führen, als ich wollte, aber ich werde es überprüfen. – Dennis

+2

Vielen Dank! Das hat funktioniert! – Dennis

-3

Volle Liste als Globle Variable deklarieren und statische Arraylist verwenden.

1

1) Holen Referenz Listview

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

2) Erstellen Sie Adapter Noch einmal mit geänderten Werten

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 

       } 
      }); 
Verwandte Themen