【发布时间】:2020-11-24 08:53:48
【问题描述】:
主活动
public class MainActivity extends AppCompatActivity {
RecyclerView mRecyclerView;
FirebaseAdapter mAdapter;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = (RecyclerView)findViewById(R.id.recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
FirebaseRecyclerOptions<DataClass> options = new FirebaseRecyclerOptions.Builder<DataClass>()
.setQuery(FirebaseDatabase.getInstance().getReference().child("Users"), DataClass.class)
.build();
mAdapter = new FirebaseAdapter(options);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
}
@Override
protected void onStart() {
super.onStart();
mAdapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
mAdapter.stopListening();
}
}
适配器
public class FirebaseAdapter extends FirebaseRecyclerAdapter<DataClass,FirebaseAdapter.MyviewHolder> {
private static final String TAG = "FirebaseAdapter";
public FirebaseAdapter(@NonNull FirebaseRecyclerOptions<DataClass> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull MyviewHolder holder, int position, @NonNull DataClass model) {
holder.name.setText(model.getName());
holder.Nickname.setText(model.getNickname());
Log.d(TAG, "onBindViewHolder: Now Bind method executing");
}
@NonNull
@Override
public MyviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View v= layoutInflater.inflate(R.layout.row_represent,parent,false);
MyviewHolder v1 = new MyviewHolder(v);
Log.d(TAG, "onCreateViewHolder: Now on create method executing");
return v1;
}
public static class MyviewHolder extends RecyclerView.ViewHolder{
TextView name;
TextView Nickname;
public MyviewHolder(@NonNull View itemView) {
super(itemView);
name = (TextView)itemView.findViewById(R.id.names);
Nickname = (TextView) itemView.findViewById(R.id.nick);
}
}
}
类
public class DataClass {
String name;
String Nickname;
public DataClass(){
}
public DataClass(String name, String Nickname) {
this.name = name;
this.Nickname= Nickname;
}
public String getName() {
return name;
}
public String getNickname() {
return Nickname;
}
}
错误:
2020-11-24 14:19:05.520 7304-7304/com.example.firebasesearchrec D/FirebaseAdapter: onCreateViewHolder: Now on create method executing
2020-11-24 14:19:05.535 7304-7304/com.example.firebasesearchrec D/AndroidRuntime: Shutting down VM
2020-11-24 14:19:05.547 7304-7304/com.example.firebasesearchrec E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.firebasesearchrec, PID: 7304
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.firebasesearchrec.DataClass
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(CustomClassMapper.java:436)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(CustomClassMapper.java:232)
我得到数据库异常无法转换 java.lang 类型的对象有人可以帮助我解决这个问题....................... …………………………………………………………………………………………………… 谢谢................................................ ..................................................... ................................................
【问题讨论】:
-
stackoverflow.com/questions/62340676/…这个问题有你的答案!
-
不,我不明白我应该怎么做才能清除这个错误
-
请编辑您的问题并将您的数据库结构添加为 JSON 文件或至少是屏幕截图。请回复@AlexMamo
-
现在检查一下 我已经添加了我的数据库,但不是 json 我希望你能理解它,因为它只有一个名字和一个昵称
-
所有都是字符串 IDK 我怎么得到错误
标签: java android firebase android-recyclerview