Klar, Android-ListView
Ich habe ein ListView. Ich möchte dynamisch zu ändern, den Inhalt der listview.Ich verwendet " - adapter.notifyDataSetChanged ();", um den Inhalt zu ändern. Ich habe auch versucht, die Einstellung dem adapter der listview auf null, aber trotzdem bekomme ich die gleichen Ergebnisse. Es ist erfrischend, aber nicht deaktivieren Sie das listview, statt es man es mit den vorherigen Ergebnissen. Was ich will, ist der Vorherige Inhalt gelöscht werden soll und die neuen Ergebnisse angezeigt werden sollen.
Ich bin nicht in der Lage zu verstehen, wo liegt mein Fehler und was ich bin fehlt.
Ich wäre Dankbar, wenn jemand könnte bitte helfen Sie mir mit diesem.
Unten ist der code, der generiert die listview
public void ListDrawer() {
try {
JSONObject jsonResponse = new JSONObject(jsonResult);
JSONArray jsonMainNode = jsonResponse.optJSONArray("myRegisteredList");
for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
String registered_name = jsonChildNode.optString("seminar");
String org = jsonChildNode.optString("organizer");
String sem_id = jsonChildNode.optString("id");
String r_sem = jsonChildNode.optString("seminar_id");
registeredlist = new HashMap<String, String>();
registeredlist.put("registeredList", registered_name);
registeredlist.put("seminar_id", r_sem);
registeredlist.put("sem_id", sem_id);
registeredlist.put("organizer", org);
registeredList.add(registeredlist);
}
} catch (JSONException e) {
//Toast.makeText(this, e.getMessage().toString() + " 1", Toast.LENGTH_LONG).show();
Toast.makeText(ViewReservedSeminarList.this, "Sorry...You don't have any reserved seminar/s.", Toast.LENGTH_LONG).show();
}
try{
simpleAdapter = new SimpleAdapter(this, registeredList,
android.R.layout.simple_list_item_2,
new String[] { "registeredList" ,"organizer", "seminar_id" }, new int[] { android.R.id.text1 , android.R.id.text2 , android.R.id.title });
listView.setAdapter(simpleAdapter);
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
//TODO Auto-generated method stub
@SuppressWarnings("unchecked")
HashMap<String, String> selected_row = (HashMap<String, String>) simpleAdapter.getItem(i);
s_id = selected_row.get("seminar_id");
Intent intent = new Intent(ViewReservedSeminarList.this, ReservedSeminar.class);
startActivity(intent);
//Toast.makeText(ViewReservedSeminarList.this, "Selected Item : "+s_id, Toast.LENGTH_LONG).show();
}
});
}catch(Exception e){
//Toast.makeText(this, e.getMessage().toString() + " 2", Toast.LENGTH_LONG).show();
Toast.makeText(ViewReservedSeminarList.this, "There is no data being fetched", Toast.LENGTH_LONG).show();
}
}
Unten ist der Ausschnitt legte ich auf die onCreate-Methode zum aktualisieren der listview alle 10 Sekunden. Ich rufe die ListDrawer Methode unter der accessWebService Methode.
final Handler handler = new Handler();
handler.postDelayed( new Runnable(){
@Override
public void run(){
accessWebService();
handler.postDelayed(this, 10 * 1000);
Log.i("TAG", "notify");
}
}, 10 * 1000
);
- schauen Sie bitte meine Antwort weiter unten , sollten Sie klar Ihre array-Liste
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie diese bitte:
Klar der arraylist/HashMap
Neue Elemente hinzufügen
adapter.notifyDataSetChanged();
set-adapter.
Wenn Sie eine
ArrayAdapter
statt einerSimpleAdapter
können Sie anrufenEntfernen alle Elemente aus dem adapter.
Versuchen, Diese
entfernen
adapter.notifyDataSetChanged();
hoffe, es funktioniertclear();
ist nicht nötig, wenn u entfernenadapter.notifyDataSetChanged();
nun, es ist gut, dass dein problem gelöst. 🙂