Wie nennen ListView-adapter von einer anderen Aktivität, für die refresh - notifyDataSetChanged()
Möchte ich nennen, das ein listview-adapter von einem anderen activies nach dem einfügen des Datensatzes zu sqllite db.
Kann ich nicht nennen den adapter.notifyDataSetChanged() Methode. Was ist der beste Weg, es zu tun.
public void onClick(View v) {
TextView item_name;
item_name=(TextView) findViewById(R.id.eItemName);
Log.d("Insert: ", "Inserting ..");
db.add_item(new Item(item_name.getText().toString()), getApplicationContext());
// I want to call the method HERE!!!!
finish();
}
wenn es keine Instanz, die für eine Aktivität, wie können Sie Datensatz ändern? Sie können die Aktivität manuell starten und in der activity onCreate, aktualisieren Sie die Liste Elemente von DB.\
InformationsquelleAutor RedLEON | 2012-07-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur
Nach
finish()
Aktuelle Aktivität, Rufen Sieadapter.notifyDataSetChanged()
ausonActivityResult()
in der bisherigen Tätigkeit (Als ich davon ausgegangen, dass die Listview in diesem vorherigen Aktivität).Starten auch Sie Ihre Derzeitige Tätigkeit aus Früheren Tätigkeit mit
startActivityForResult();
Oder wenn Sie die Referenz der Liste der Adapter, die in dieser Aktivität, dann mit dieser Referenz nennen
adapter.notifyDataSetChanged()
. (Aber ich denke, dass es nicht eine gute Praxis)private void prepareListener() { listener_open_add_item = new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(getBaseContext(), ItemsAddActivity.class); startActivity(intent); } }; }
ich versuchte adapter.notifyDataSetChanged() nach startActivity(intent); line. Aber es hat nicht funktioniert. Cas der Zeile ausgeführt wird, bevor AddItemActivity fertig. Aus dem Grund versuche ich, um code auszuführen, nachdem Sie auf fertig stellen(); in dieser Methode.Anstatt nun
startActivity(intent)
verwendenstartActivityForResult(intent,0);
und fügen SieonActivityResult()
Methode in ItemsActivity. inonActivityResult()
Methode schreibenadapter.notifyDataSetChanged();
Ich fügte hinzu, diese codes, aber es scheint onActivityResult-Methode nicht anrufen konnte. Ich Versuch immer noch...
Den code Debuggen von
onActivityResult()
weil, wenn Sie beginnen, eine Tätigkeit mitstartActivityForResult()
und wenn diese Aktivität beenden() dann die MethodeonActivityResult()
von der vorherigen Aktivität, die definitiv genannt.Ich habe versucht, aber die Aktivität hat nie angerufen. Ich eine Schaltfläche erstellen, und nachdem Sie einen Datensatz einfügen, klickte ich auf die Schaltfläche. - adapter.notifyDataSetChanged(); Befehl nicht ausführen. Ich glaube, ich versuche neu zu laden ListView-Komponente oder ich versuche, um eingefügten Datensatz zu adapter. Vielen Dank für Ihre nützliche Ratschläge
InformationsquelleAutor user370305
Die bessere option wäre, wieder laden Sie Ihre
ListView
mit neuen Daten innerhalbonResume()
Ihrer Tätigkeit, wo Sie haben ListView. Es gibt keine Notwendigkeit, rufen SienotifyDataSetChanged()
aus einer anderen Klasse, da Sie nicht über Ihre Liste sichtbar, in der Sie Ihre weitere Tätigkeit.notifyDataSetChanged() isn't working?
sollte es funktionieren.Leider nicht funktioniert.
können Sie mir zeigen, wie Sie es verwenden?
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { adapter.notifyDataSetChanged() } public void getItemList() { ArrayList<Item> itemArray = new ArrayList<Item>(); itemArray = db.getAllItems(); adapter = new ItemAdapter(this, R.layout.items_row, itemArray); ilistViewItems.setAdapter(adapter); }
InformationsquelleAutor Lalit Poptani