Ich arbeite mit dem Android Studio und versuche, eine ListView mit Daten zu füllen, die in Dateien auf dem internen Speicher der Geräte gespeichert ist . Ich bin in der Lage, eine Liste mit der genauen Anzahl der Elemente zu erstellen, da es Dateien gibt, die aber alle unterschiedliche Informationen anzeigen sollen. Im Moment zeigen sie alle dieselben Daten wie das erste Element in der ArrayList an. HierDas Füllen eines Android ListView mit Daten aus einer ArrayList setzt jedes Element auf das gleiche wie das erste
ist der Code:
ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
File directory = contextWrapper.getDir(filepath, Context.MODE_PRIVATE);
int counter = 0;
int fileNameNumber = 1;
filename = "newAssessment(" + fileNameNumber + ").json";
internalFile = new File(directory, filename);
JSONObject jsonObject;
while (internalFile.exists()) {
files.add(counter, internalFile);
try {
FileInputStream fis = new FileInputStream(internalFile);
DataInputStream in = new DataInputStream(fis);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
myData = myData + strLine;
}
}catch(IOException e){
e.printStackTrace();
}
try {
jsonObject = new JSONObject(myData);
String assessmentDate = jsonObject.getString("assessmentDate");
String orchard = jsonObject.getString("orchard");
data.add(counter, assessmentDate + " : " + orchard);
}catch(JSONException e){
e.printStackTrace();
}
counter++;
fileNameNumber++;
filename = "newAssessment(" + fileNameNumber + ").json";
internalFile = new File(directory, filename);
}
LVAssessments.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data));
Ich kann bestätigen, dass verschiedene Daten gespeichert werden. Ändern des Elements, das zuerst kommt, ändert das Array alle Elemente.
Danke für die Hilfe.
wo wurden Sie initialisiert ** Daten **? – KishuDroid
Es ist eine Klassenvariable private Liste data = new ArrayList <>(); ' –
mgrantnz
Deklarieren Sie es in Ihrer Methode – KishuDroid