【发布时间】:2017-10-04 00:14:49
【问题描述】:
尝试创建 FirebaseRecyclerAdapter 以从对象类中检索所有数据,但我收到错误“无法将 java.util.HashMap 类型的值转换为字符串” 这是我的代码:
public class Match {
private Map<String, Object> name;
private Map<String, Object> desc;
public Map<String, Object> getName() {
return name;
}
public Map<String, Object> getDesc() {
return desc;
}
public Match(){} //even with /without this guy
}
public class MatchHolder extends RecyclerView.ViewHolder {
private final TextView mNameField;
private final TextView mMessageField;
public MatchHolder(View itemView) {
super(itemView);
mNameField = (TextView) itemView.findViewById(android.R.id.text1);
mMessageField = (TextView) itemView.findViewById(android.R.id.text2);
}
public void setName(Map<String, Object> name) {
mNameField.setText((CharSequence) name);
}
public void setDesc(Map<String, Object> desc) {
mMessageField.setText((CharSequence) desc);
}
}
public class SportActivity extends AppCompatActivity {
final FirebaseDatabase database = FirebaseDatabase.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sport);
DatabaseReference ref = database.getReference("myApp/sportActivity"); //with this guy i get the mentioned error
//if use DatabaseReference ref = database.getReference("myApp/sportActivity/Match");
//i get in the log cat ,error W/ClassMapper: No setter/field for name1,name2 ,desc1,desc2 ...etc
RecyclerView matches = (RecyclerView) findViewById(recycle_viewer);
matches.setHasFixedSize(true);
matches.setLayoutManager(new LinearLayoutManager(this));
FirebaseRecyclerAdapter<Match, MatchHolder> mAdapter = new FirebaseRecyclerAdapter<Match, MatchHolder>(
Match.class,
android.R.layout.two_line_list_item,
MatchHolder.class,
ref) {
@Override
public void populateViewHolder(MatchHolder holder, Match match, int position) {
holder.setName(match.getName());
holder.setDesc(match.getDesc());
}
};
matches.setAdapter(mAdapter);
}
@Override
protected void onDestroy() {
super.onDestroy();
FirebaseRecyclerAdapter mAdapter = null;
mAdapter.cleanup();
}
}
我无法上传我的数据库的图片,但是,结构是: 我的应用程序/运动活动/ 这是 sportActivity 的 Json:
"sportActivity" : {
"Match" : {
"desc" : {
"des3" : "desc3",
"desc2" : "desc2"
},
"name" : {
"name1" : "name1",
"name2" : "name2"
}
}
}
}
}
【问题讨论】:
-
不要尝试上传图片,而是编辑您的问题以包含数据库的实际最小 JSON。您可以通过单击Firebase Database console 中的“导出 JSON”链接来获取此信息。
-
你能显示更多代码吗?
-
@KeLiuyue 已提供所有必需的代码。
-
我可以在你的代码中看到
HashMap。 -
@KeLiuyue 为了避免误导cmets,如果您对如何解决问题有建议,请评论我?
标签: java android firebase-realtime-database firebaseui