이 게시물 database.DatabaseException: Can't convert object of type java.lang.String to type을 읽었지만 여전히 동일한 오류가 발생하므로이 문제가 발생합니다. 어디가 잘못 됐어. Firebase의 새로운 도움이 필요합니다.com.google.firebase.database.DatabaseException : java.lang.String 유형의 객체를 RecyclerView를 사용하여 유형으로 변환 할 수 없습니다.
이 내 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;
}
}
이 내 중포 기지 database Console picture입니다.
을 시도합니다. 또한 무엇이 잘못되었는지에 대한 중요한 정보를 포함하는 완전한 스택 추적을 포함하십시오. –
어디에서 오류가 발생 했습니까? 오류가 발생한 후 logcat/Android 모니터를보고 어떤 라인인지 찾으십시오. – Wilik
firebase recyclerview 어댑터를 사용하지 않는 특별한 이유가 있습니까? 이것 좀 봐 https://www.youtube.com/watch?v=2J6spwAVP0M – ElDuderino