Ich versuche, einen RecyclerView mit Informationen aus meiner Firebase-Datenbank zu erhalten.Anzeigen mehrerer Elemente aus einem Firebase-Datenbankelement in RecyclerView
Ich hatte es mit nur 1 Element in der Datenbank arbeiten (ein int), aber jetzt habe ich auch einen String hinzugefügt und es wird nicht mehr funktionieren.
Meine Datenbankstruktur ist
-random key id
- item: "Coffee"
- points: 10
Hier ist mein Adapter
public class RecyclerViewAdapter extends
RecyclerView.Adapter<RecyclerViewHolders> {
private List<Points> task;
protected Context context;
public RecyclerViewAdapter(Context context, List<Points> task) {
this.task = task;
this.context = context;
}
@Override
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int
viewType) {
RecyclerViewHolders viewHolder = null;
View layoutView =
LayoutInflater.from(parent.getContext()).inflate(R.layout.to_do_list,
parent, false);
viewHolder = new RecyclerViewHolders(layoutView, task);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerViewHolders holder, int position)
{
holder.categoryTitle.setText((task.get(position).getPoints()));
holder.itemTitle.setText(task.get(position).getItem());
}
@Override
public int getItemCount() {
return this.task.size();
}
}
Hier ist meine ViewHolder
public class RecyclerViewHolders extends RecyclerView.ViewHolder {
private static final String TAG =
RecyclerViewHolders.class.getSimpleName();
public ImageView markIcon;
public TextView categoryTitle, itemTitle;
public ImageView deleteIcon;
private List<Points> taskObject;
public RecyclerViewHolders(final View itemView, final List<Points> taskObject) {
super(itemView);
this.taskObject = taskObject;
categoryTitle = (TextView) itemView.findViewById(R.id.task_title);
itemTitle = (TextView) itemView.findViewById(R.id.itemTV);
}
}
Und mein Code in meinem Haupt-Aktivität zu zeigen, zur Liste
allPoints = new ArrayList<Points>();
recyclerView = (RecyclerView)
view.findViewById(R.id.point_list);
linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
private void getAllTask (DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
String taskTitle = singleSnapshot.getValue(String.class);
String taskItem = singleSnapshot.getValue(String.class);
allPoints.add(new Points(taskItem,
Integer.parseInt(taskTitle)));
recyclerViewAdapter = new RecyclerViewAdapter(getActivity(),
allPoints);
recyclerView.setAdapter(recyclerViewAdapter);
}
}
Es funktionierte, als ich nur die "Punkte" angezeigt hatte, aber jetzt, da ich den String 'item' hinzugefügt habe, wird ein NumberFormatExexton auf diese Zeichenfolge geworfen.
java.lang.NumberFormatException: Für die Eingabe-Stichwort: "Coffee"
Hier meine Modellklasse ist auch
public class Points {
public int points;
public String item;
public Points(){}
public Points(String item, int points) {
this.points = points;
this.item = item;
}
public int getPoints(){
return points;
}
public void setPoints(int points){
this.points = points;
}
public String getItem(){
return item;
}
public void setItem(String item){
this.item = item;
}
}
meine Struktur Hier ist
beans-card
user
urx53ou8uBhRODfyqqf57kb8Z0S2
-KlYnqRvumMfu5h0FvLp
item:
"Coffee"
points:
10
und meine Referenz
VerwendenDatabaseReference db_receipt =
FirebaseDatabase.getInstance().getReference().child("user").child(mUserId);
'Für Eingabestring:„Kaffee“' ... Dann speichern Sie nicht: 'Coffee' an dieser Variablen –
Also, denken Sie, dass„Coffee“eine gültige Zahl ist? –