私はこの問題を直面しています。私はこの記事database.DatabaseException: Can't convert object of type java.lang.String to typeを読んでいますが、どこが間違っていますか。私はあなたの助けがFirebaseで新しく必要です。com.google.firebase.database.DatabaseException:RecyclerViewを使用してjava.lang.String型のオブジェクトを型に変換できません
これは私のMainActivity.java
クラスです
public class MainActivity extends AppCompatActivity {
private Button but;
private DatabaseReference mRef;
private MyAdapter adapter;
public RecyclerView recyclerView;
public List<ModelClass> doctors;
public Context c;
private LinearLayoutManager linearLayoutManager;
public DatabaseReference mMovieRef ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
doctors = new ArrayList<ModelClass>();
recyclerView =(RecyclerView) findViewById(R.id.recyclerview);
linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setHasFixedSize(true);
mRef = FirebaseDatabase.getInstance().getReference("Doctors");
mRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
LoadData(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
LoadData(dataSnapshot);
}
public void onChildRemoved(DataSnapshot dataSnapshot) { }
public void onChildMoved(DataSnapshot dataSnapshot, String s) { }
public void onCancelled(DatabaseError databaseError) { }
});
}
public void LoadData (DataSnapshot dataSnapshot){
for(DataSnapshot ds :dataSnapshot.getChildren()){
System.out.println(ds.getValue());
ModelClass doc =ds.getValue(ModelClass.class);
doctors.add(doc);
adapter = new MyAdapter(MainActivity.this, doctors);
recyclerView.setAdapter(adapter);
}
}
}
これは私のAdapter
クラスです
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
protected Context c;
List<ModelClass> doctors;
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference url =storage.getReferenceFromUrl("gs://askdoctor-546bf.appspot.com/");
private List<ModelClass> itemList = null;
public MyAdapter(Context c, List<ModelClass> doctors) {
this.c = c;
this.doctors = doctors;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_activity,parent,false);
MyViewHolder holder = new MyViewHolder(v);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
final ModelClass feedItems = itemList.get(position);
holder.name.setText(doctors.get(position).getDoctorsName());
holder.email_txt.setText(doctors.get(position).getEmail());
// PicassoClient.downloadImage(c,doctors.get(position).getUrl(),holder.img);
//Download image using picasso library
Picasso.with(c).load(url+ feedItems.getPhoto())
.error(R.mipmap.ic_launcher).
resize(120, 50)
.placeholder(R.mipmap.ic_launcher).into(holder.img);
}
@Override
public int getItemCount() {
return doctors.size();
}
}
これは私のmodel
クラスです
public class ModelClass {
private String DoctorsName;
private String Email;
private String Phone;
private String Photo;
public ModelClass() {
// empty default constructor, necessary for Firebase to be able to deserialize posts
}
public String getDoctorsName() {
return DoctorsName;
}
public void setDoctorsName(String doctorsName) {
DoctorsName = doctorsName;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public String getPhoto() {
return Photo;
}
public void setPhoto(String photo) {
Photo = photo;
}
}
これは私のFirebase database Console pictureです。
を試してみてください。何が起こっているのかについての重要な情報が含まれているので、完全なスタックトレースも含めてください。 –
エラーはどこで発生しましたか?エラーが発生した後にlogcat/Androidモニターを見て、それがどのラインであるかを調べる – Wilik
firebase recyclerviewアダプターを使用していない特別な理由は何ですか?これをチェックしてくださいhttps://www.youtube.com/watch?v=2J6spwAVP0M – ElDuderino