Meine Listview-Daten werden dupliziert, wenn ich eine Aktivität neu lade oder zu einer verwandten Aktivität zurückwechsle. Wenn ich mich jedoch nach der Anmeldung bei der Anwendung anmelde, bleiben eindeutige Daten erhalten.So zeigen Sie eindeutige Daten in der Listenansicht android an
Wenn ich meinen Code debuggen, merke ich, dass der Cursor der Datenbank vorherige Werte behält. Wie löst man das?
hier ist mein Code:
public void setadapter() {
boolean checkFirstTime = false;
Log.e("Set Adapter call>>>>>", "called");
HashMap<String, String> map;
Database1 db = new Database1(getActivity());
Cursor cursor = db.getWritableDatabase().query("timelinedata", null, null, null, null, null, null);
System.out.println("Size of Cursor" + cursor.getCount());
TImelineTask.contactList.clear();
TImelineTask.contactList = new ArrayList<>();
while (cursor.moveToNext()) {
map = new HashMap<>();
map.put("id", cursor.getString(0));
map.put("sms", cursor.getString(1));
map.put("phoneno", cursor.getString(2));
map.put("date_time", cursor.getString(3));
map.put("type", cursor.getString(4));
map.put("source", cursor.getString(5) + " ");
map.put("imagepath", cursor.getString(6));
map.put("imageadd", cursor.getString(7) + "");
map.put("issue_type", cursor.getString(8) + "");
map.put("issue_select_type", cursor.getString(9));
map.put("issuetype", cursor.getString(9));
map.put("date", cursor.getString(10));
map.put("time", cursor.getString(11));
if (getActivity().getIntent().getStringExtra("caseid").equalsIgnoreCase(cursor.getString(13))) {
TImelineTask.contactList.add(map);
}
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
db.close();
if (checkFirstTime) {
if (TImelineTask.contactList.size() > 0) {
TImelineTask.contactList.clear();
}
}
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i < TImelineTask.contactList.size() - 1; i++) {
try {
Date date1 = sdf.parse(TImelineTask.contactList.get(i).get("date_time"));
swappos = i;
for (int j = i + 1; j < TImelineTask.contactList.size(); j++) {
Date date2 = sdf.parse(TImelineTask.contactList.get(j).get("date_time"));
if (date1.compareTo(date2) < 0) {
Collections.swap(TImelineTask.contactList, swappos, j);
date1 = date2;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Log.e("Adapter ", "calling");
System.out.println("Adapter Size" + TImelineTask.contactList.size());
listadapter = new ListAdapterClass(TImelineTask.contactList, getActivity(), this);
listview.setAdapter(listadapter);
listadapter.notifyDataSetChanged();
if (listadapter.isEmpty()) {
noentry.setVisibility(View.VISIBLE);
listadapter.notifyDataSetChanged();
} else {
listadapter.notifyDataSetChanged();
noentry.setVisibility(View.GONE);
}
new MyTimerTask().execute();
checkFirstTime = true;
}
Löschen Sie Ihre Liste, bevor Sie Daten in der Liste hinzugefügt haben. – Piyush
@Piyush Ich habe es versucht, aber nichts passiert. – MonicaGPH
Gibt es doppelte Daten in Ihrer Datenbank? – fangxing