Hallo zusammen,
ich bin noch ziemlich neu in der App-Entwicklung und hänge an einem speziellen Problem.
Ich möchte mir in einem RecyclerView eine Übersicht von Daten ausgeben lassen.
Diese Daten hole ich grob gesagt aus der Datenbank in der Klasse "MainActivity".
[CODE lang="java" title="MainActivity"]protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject jsonResult = new JSONObject(result);
int success = jsonResult.getInt("success");
if (success == 1) {
JSONArray hof = jsonResult.getJSONArray("hof");
list.clear(); //clear array before adding data again to prevent duplications in record
for (int i = 0; i < hof.length(); i++) {
JSONObject hoff = hof.getJSONObject(i);
Integer id = hoff.getInt("HNr");
Integer eigenerzeugnis = hoff.getInt("ENr");
String name = hoff.getString("Hofname");
Integer plz = hoff.getInt("PLZ");
String adress = hoff.getString("Ortsname");
String strasse = hoff.getString("Straße");
String hausNr = hoff.getString("Hausnummer");
String image = hoff.getString("Path");
if(Hnr == id){
continue;
}
//add all data in the list on every iteration
list.add(new CustomData(name, plz, adress, strasse, hausNr, "testbild", eigenerzeugnis));
Hnr = hoff.getInt("HNr");
}
//set the list data to the customDataAdapter to form into the list
recyclerView.setAdapter(new CustomDataAdapter(context, list));[/CODE]
Nun habe ich 2 XML-Klassen 1. activity_main, in der sich das RecyclerView befindet und customlayout, in der sich die verschiedenen Elemente wie TextView oder ImageView befinden.
Über die Klasse CustomDataAdapter füge ich grob gesagt die Daten aus der DB nun in die verschiedenen Views ein.
Nun habe ich 2 Bilder. Mit einer ID möchte ich ermitteln welches Bild der ImageResource übergeben werden soll.
[CODE lang="java" title="CustomDataAdapter"] public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
CustomData dataModel = list.get(position);
Integer j = position;
//bind data here
holder.hofname.setText(dataModel.getName());
holder.adresse.setText(dataModel.getAddress());
holder.strasse.setText(dataModel.getStrasse());
holder.plz.setText(String.valueOf(dataModel.getPLZ()));
holder.hausNr.setText(dataModel.gethausNr());
holder.itemView.setOnClickListener(new View.OnClickListener() {
for ( j = 0; j <= list.size(); j++ ) {
for (CustomData cd : list) {
Integer i = cd.geteigenerzeugnis();
switch(i) {
case 1:
holder.eigenerzeugnis.setImageResource(R.drawable.icn_on_bienenprodukte);
break;
case 2:
holder.eigenerzeugnis.setImageResource(R.drawable.icn_on_obst_gemuese);
break;
}
}
}
}[/CODE]
Jetzt habe ich jedoch das Problem, dass alle Daten, das erste Bild zugeordnet bekommen, obwohl einmal case2 eintreten sollte.
Beim Debuggen habe ich bemerkt, dass für jede Position (Integer j) sämtliche IDs aller Daten erneut durchlaufen werden und die letzte auftauchende ID verwendet wird.
Stehe total auf dem Schlauch.
Vielleicht hat jemand von euch eine Idee?
Danke und liebe Grüße
ich bin noch ziemlich neu in der App-Entwicklung und hänge an einem speziellen Problem.
Ich möchte mir in einem RecyclerView eine Übersicht von Daten ausgeben lassen.
Diese Daten hole ich grob gesagt aus der Datenbank in der Klasse "MainActivity".
[CODE lang="java" title="MainActivity"]protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject jsonResult = new JSONObject(result);
int success = jsonResult.getInt("success");
if (success == 1) {
JSONArray hof = jsonResult.getJSONArray("hof");
list.clear(); //clear array before adding data again to prevent duplications in record
for (int i = 0; i < hof.length(); i++) {
JSONObject hoff = hof.getJSONObject(i);
Integer id = hoff.getInt("HNr");
Integer eigenerzeugnis = hoff.getInt("ENr");
String name = hoff.getString("Hofname");
Integer plz = hoff.getInt("PLZ");
String adress = hoff.getString("Ortsname");
String strasse = hoff.getString("Straße");
String hausNr = hoff.getString("Hausnummer");
String image = hoff.getString("Path");
if(Hnr == id){
continue;
}
//add all data in the list on every iteration
list.add(new CustomData(name, plz, adress, strasse, hausNr, "testbild", eigenerzeugnis));
Hnr = hoff.getInt("HNr");
}
//set the list data to the customDataAdapter to form into the list
recyclerView.setAdapter(new CustomDataAdapter(context, list));[/CODE]
Nun habe ich 2 XML-Klassen 1. activity_main, in der sich das RecyclerView befindet und customlayout, in der sich die verschiedenen Elemente wie TextView oder ImageView befinden.
Über die Klasse CustomDataAdapter füge ich grob gesagt die Daten aus der DB nun in die verschiedenen Views ein.
Nun habe ich 2 Bilder. Mit einer ID möchte ich ermitteln welches Bild der ImageResource übergeben werden soll.
[CODE lang="java" title="CustomDataAdapter"] public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
CustomData dataModel = list.get(position);
Integer j = position;
//bind data here
holder.hofname.setText(dataModel.getName());
holder.adresse.setText(dataModel.getAddress());
holder.strasse.setText(dataModel.getStrasse());
holder.plz.setText(String.valueOf(dataModel.getPLZ()));
holder.hausNr.setText(dataModel.gethausNr());
holder.itemView.setOnClickListener(new View.OnClickListener() {
for ( j = 0; j <= list.size(); j++ ) {
for (CustomData cd : list) {
Integer i = cd.geteigenerzeugnis();
switch(i) {
case 1:
holder.eigenerzeugnis.setImageResource(R.drawable.icn_on_bienenprodukte);
break;
case 2:
holder.eigenerzeugnis.setImageResource(R.drawable.icn_on_obst_gemuese);
break;
}
}
}
}[/CODE]
Jetzt habe ich jedoch das Problem, dass alle Daten, das erste Bild zugeordnet bekommen, obwohl einmal case2 eintreten sollte.
Beim Debuggen habe ich bemerkt, dass für jede Position (Integer j) sämtliche IDs aller Daten erneut durchlaufen werden und die letzte auftauchende ID verwendet wird.
Stehe total auf dem Schlauch.
Vielleicht hat jemand von euch eine Idee?
Danke und liebe Grüße