【发布时间】:2017-06-02 18:42:38
【问题描述】:
我正在尝试从我的 firebase 数据库中获取一个充满信息的 RecyclerView。
我只使用了数据库中的 1 个项目(一个 int),但现在我也添加了一个字符串,它不会再工作了。
我的数据库结构是
-random key id
- item: "Coffee"
- points: 10
这是我的适配器
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();
}
}
这是我的 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);
}
}
我的主要活动中的代码要显示到列表中
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);
}
}
当我只显示“点”时它可以工作,但现在我添加了字符串“项目”,它会在该字符串上抛出一个 NumberFormatExepton。
java.lang.NumberFormatException:对于输入字符串:“Coffee”
这也是我的模型类
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;
}
}
这是我的结构
beans-card
user
urx53ou8uBhRODfyqqf57kb8Z0S2
-KlYnqRvumMfu5h0FvLp
item:
"Coffee"
points:
10
还有我的参考
DatabaseReference db_receipt =
FirebaseDatabase.getInstance().getReference().child("user").child(mUserId);
【问题讨论】:
-
For input string: "Coffee"... 然后不要在那个变量中存储:Coffee -
那么,你认为“Coffee”是一个有效的数字吗?
标签: android firebase firebase-realtime-database android-recyclerview