Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase至RecyclerView:未连接适配器;跳过布局_Android_Firebase_Android Fragments_Firebase Realtime Database - Fatal编程技术网

Android Firebase至RecyclerView:未连接适配器;跳过布局

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

我在stack overflow中搜索了此错误,并尝试了所有方法,但我可以得到解决方案,下面是我所做的:

我尝试从Firebase数据库中检索数据,其中每个节点都包含名称、id和图像源链接,并尝试将数据加载到片段中的recycler视图中
这是我的片段

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;
    }
}