Android Firebase至RecyclerView:未连接适配器;跳过布局
我在stack overflow中搜索了此错误,并尝试了所有方法,但我可以得到解决方案,下面是我所做的: 我尝试从Firebase数据库中检索数据,其中每个节点都包含名称、id和图像源链接,并尝试将数据加载到片段中的recycler视图中Android Firebase至RecyclerView:未连接适配器;跳过布局,android,firebase,android-fragments,firebase-realtime-database,Android,Firebase,Android Fragments,Firebase Realtime Database,我在stack overflow中搜索了此错误,并尝试了所有方法,但我可以得到解决方案,下面是我所做的: 我尝试从Firebase数据库中检索数据,其中每个节点都包含名称、id和图像源链接,并尝试将数据加载到片段中的recycler视图中 这是我的片段 public class CAKE extends Fragment { private RecyclerView recyclerview; private ListViewAdaptor adaptor; ArrayList<Data
这是我的片段
public class CAKE extends Fragment {
private RecyclerView recyclerview;
private ListViewAdaptor adaptor;
ArrayList<Data> info;
DatabaseReference mref;
public CAKE() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_cake, container, false);
recyclerview = (RecyclerView) view.findViewById(R.id.listrecyclerview);
info = new ArrayList<>();
mref = FirebaseDatabase.getInstance().getReference("Cakes");
mref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Data a = dataSnapshot.getValue(Data.class);
Log.v("data","added");
info.add(a);
adaptor = new ListViewAdaptor(getActivity(),info);
recyclerview.setLayoutManager(new
LinearLayoutManager(getActivity()));
recyclerview.hasFixedSize();
recyclerview.setAdapter(adaptor);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return view;
}
}
下面是我的“回收器”视图适配器类:
public class ListViewAdaptor extends RecyclerView.Adapter
<ListViewAdaptor.MyViewHolder>{
private LayoutInflater inflater;
ArrayList<Data> info;
public ListViewAdaptor(Context context, ArrayList<Data> info){
inflater = LayoutInflater.from(context);
this.info = info;
// Log.v("test",info.get(2).getName());
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.list_item,parent,false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.text.setText(info.get(position).getId());
holder.text2.setText(info.get(position).getName());
holder.img.setImageResource(R.drawable.itachi);
}
@Override
public int getItemCount() {
return info.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView text,text2;
ImageView img;
public MyViewHolder(View itemView) {
super(itemView);
text = (TextView) itemView.findViewById(R.id.itemtext1);
text2 = (TextView) itemView.findViewById(R.id.itemtext2);
img = (ImageView) itemView.findViewById(R.id.itemimage);
}
}
}
我无法在应用程序中看到terxtview,您无法看到文本,因为您的数据/模型类变量名称与firebase数据库上的密钥名称存储不同 在logcat中,它显示了这一点
No setter/field for ID found on class com.example.itachi.com.pab.Data (fields/setters are case sensitive!)
No setter/field for image found on class com.example.itachi.com.pab.Data
No setter/field for Name found on class com.example.itachi.com.pab.Data (fields/setters are case sensitive!)
cleary说您应该更改data类中的变量名,以便与firebase数据库中的变量名完全匹配,如下所示
public class Data {
// your varibale name is changed to match the firebase db
private String ID,Name,image;
public Data(){
}
public Data(String id, String name, String img) {
this.ID= id;
this.Name= name;
this.image= img;
}
public String getId() {
return ID;
}
public void setId(String id) {
this.ID= id;
}
public String getName() {
return Name;
}
public void setName(String name) {
this.Name = name;
}
public String getImg() {
return image;
}
public void setImg(String img) {
this.image= img;
}
}
您有什么问题?无法在“回收器”视图中查看文本视图
No setter/field for ID found on class com.example.itachi.com.pab.Data (fields/setters are case sensitive!)
No setter/field for image found on class com.example.itachi.com.pab.Data
No setter/field for Name found on class com.example.itachi.com.pab.Data (fields/setters are case sensitive!)
public class Data {
// your varibale name is changed to match the firebase db
private String ID,Name,image;
public Data(){
}
public Data(String id, String name, String img) {
this.ID= id;
this.Name= name;
this.image= img;
}
public String getId() {
return ID;
}
public void setId(String id) {
this.ID= id;
}
public String getName() {
return Name;
}
public void setName(String name) {
this.Name = name;
}
public String getImg() {
return image;
}
public void setImg(String img) {
this.image= img;
}
}