Я создал настраиваемый адаптер списка, и я пытаюсь перечислить данные из базы данных SQLite. Мой список выводит правильное количество записей БД, но дублировал последний элемент БД много раз (столько же раз, сколько есть элементов в БД).Дублирующие значения, добавляемые в ArrayList
У меня есть этот код:
private class JSONParse extends AsyncTask<String, String, JSONArray> {
@Override
protected JSONArray doInBackground(String... args) {
JSONArray arr = null;
db = new DatabaseHandler(getActivity());
arr = db.getSynced();
db.close();
DiaryItems diary = new DiaryItems();
try {
for (int i = 0; i < arr.length(); i++) {
JSONObject c = arr.getJSONObject(i);
String ass_id = c.getString(TAG_ASSID);
String time = c.getString(TAG_TIME);
String cname = c.getString(TAG_CNAME);
String cno = c.getString(TAG_CNO);
String type = c.getString(TAG_TYPE);
String complete = c.getString(TAG_COMPLETE);
System.out.println("ASS ID: " + ass_id); //works - prints ass_id 1->10
diary.setAss_id(ass_id);
diary.setTime(time);
diary.setCname(cname);
diary.setCno(cno);
diary.setType(type);
diary.setComplete(complete);
diaryList.add(diary);
}
for (int j = 0; j < diaryList.size(); j++) {
System.out.println("ASSIGN ID: " + diaryList.get(j).getAss_id());
//this prints this correct size of items, but the array only contains
//the values of the last item parsed in the JSON
}
} catch (JSONException e) {
e.printStackTrace();
}
return arr;
}
@Override
protected void onPostExecute(JSONArray array) {
if (dialog.isShowing()) {
System.out.println("Dismissed dialog");
dialog.dismiss();
}
if (diaryList != null) {
DiaryListAdapter adapter = new DiaryListAdapter(getActivity(), diaryList);
getListView().setAdapter(adapter);
}
}
}
Вы создали экземпляр объекта дневника вне цикла так, в конечном счете, тот же экземпляр создается в каждой итерации – SacJn