私のリストビューデータは、アクティビティをリロードしたり、関連するアクティビティに戻るときに重複します。しかし、ログアウト後にアプリケーションからログインすると、一意のデータが保持されます。リストビューで一意のデータを表示する方法
私のコードをデバッグすると、データベースのカーソルが以前の値を保持していることが分かります。これを解決するには?
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;
}
リストにデータを追加する前にリストを消去します。 – Piyush
@Piyush私はそれを試しましたが、何も起こっていません。 – MonicaGPH
データベースに重複したデータがありますか? – fangxing