Java 无法将数据从FireBase加载到回收器视图中

Java 无法将数据从FireBase加载到回收器视图中,java,android,firebase,android-recyclerview,Java,Android,Firebase,Android Recyclerview,我正试图通过从FireBase加载数据来创建一个回收器视图列表 为此,我制作了MainList.java public class MainList { private String imageResourceId; private String name; public MainList() {} public MainList(String imageResourceId, String name){ this.imageResourceId = imageResourceI

我正试图通过从FireBase加载数据来创建一个回收器视图列表

为此,我制作了MainList.java

public class MainList {
private String imageResourceId;
private String name;

public MainList() {}


public MainList(String imageResourceId, String name){
    this.imageResourceId = imageResourceId;
    this.name = name;
}

public String getImageResourceId() { return imageResourceId; }

public String getName(){ return name;}
}

和MainListAdapter

public class MainListAdapter extends RecyclerView.Adapter<MainListAdapter.MainListViewHolder>{

ImageView item_image;

List<MainList> mMainList;
LayoutInflater inflater;

class MainListViewHolder extends RecyclerView.ViewHolder {

    TextView item_name;
    ImageView item_image;

    MainListAdapter mAdapter;

    public MainListViewHolder(View itemView, MainListAdapter adapter) {
        super(itemView);

        item_name = itemView.findViewById(R.id.item_name);
        item_image = itemView.findViewById(R.id.item_image);
        this.mAdapter = adapter;
    }
}

public MainListAdapter(Context context, List<MainList> main_list){
    inflater = LayoutInflater.from(context);
    this.mMainList = main_list;
}

@NonNull
@Override
public MainListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View mItemView = inflater.inflate(R.layout.list_item, parent, false);
    return new MainListViewHolder(mItemView, this);
}

@Override
public void onBindViewHolder(@NonNull MainListViewHolder holder, int position) {
    MainList mainList = mMainList.get(position);
    holder.item_name.setText(mainList.getName());
    Picasso.get().load(mainList.getImageResourceId()).into(item_image);
    //holder.item_image.setImageResource(mainList.getImageResourceId());
}

@Override
public int getItemCount() {
    return mMainList.size();
}
public类MainListAdapter扩展了RecyclerView.Adapter{
图像视图项_图像;
列表列表;
充气机;
类MainListViewHolder扩展了RecyclerView.ViewHolder{
TextView项目名称;
图像视图项_图像;
MainListAdapter;
公共MainListViewHolder(视图项视图、MainListAdapter适配器){
超级(项目视图);
item_name=itemView.findviewbyd(R.id.item_name);
item_image=itemView.findViewById(R.id.item_image);
this.mAdapter=适配器;
}
}
公共MainListAdapter(上下文上下文,列表main\u列表){
充气器=充气器。从(上下文);
this.mMainList=主列表;
}
@非空
@凌驾
public MainListViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
查看mItemView=充气机。充气(R.layout.list\u项,父项,false);
返回新的MainListViewHolder(mItemView,this);
}
@凌驾
public void onBindViewHolder(@NonNull MainListViewHolder,int位置){
MainList MainList=mMainList.get(位置);
holder.item_name.setText(mainList.getName());
Picasso.get().load(mainList.getImageResourceId())。放入(item_image);
//holder.item_image.setImageResource(mainList.getImageResourceId());
}
@凌驾
public int getItemCount(){
返回mMainList.size();
}
} 我尝试在OnBindViewHolder中使用毕加索来制作我的图像

在MainActivity中,我尝试从FireBase获取数据以填充我的列表

main_comics_List = new ArrayList<>();

    mRef = FirebaseDatabase.getInstance().getReference().child("ComicsData").child("AllComicses");
    mRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
                MainList item_of = dataSnapshot1.getValue(MainList.class);
                main_comics_List.add(item_of);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
main_漫画列表=new ArrayList();
mRef=FirebaseDatabase.getInstance().getReference().child(“ComicData”).child(“AllComicses”);
mRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot dataSnapshot1:DataSnapshot.getChildren()){
MainList项_of=dataSnapshot1.getValue(MainList.class);
主漫画列表。添加(项目);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
但是当我启动我的应用程序时,在我的回收商处没有显示任何内容,我收到了信息

我做错了什么?我该怎么解决呢?
如果您能回答我,我将不胜感激。

MainList中的实例变量应与数据库中的属性相同。因此,在
main列表中添加以下内容:

private String imageLink;
private String title;
二传手和接球手:

public String getImageLink() { return imageLink; }

public String getTitle(){ return title;}

public void setImageLink(String imageLink) { this.imageLink = imageLink; }

public void setTitle(String title){ this.title = title;}

此外,在您的数据库中,您似乎没有使用
name
imageResourceId
,因此您可以将它们从类
MainList
中删除,谢谢您的快速回答。正如您所说,我刚刚尝试添加setter(和getter),但现在我得到了这样一条消息:在com.example.comicsreader.MainList类上找不到标题的setter/field(fields/setter区分大小写!)在com.example.comicsreader.MainList类上找不到ImageLink的setter/字段(字段/setter区分大小写!)在数据库中,属性应该是
title
ImageLink
,小写的
t
和小写的
i
Peter,我更改了数据库属性。但现在的问题是,我的列表只有在我旋转设备时才会显示。。。(若我启动landsape,并没有显示任何内容,但当我旋转设备时,Recycler正在按应有的方式加载)。我很困惑。这是什么魔法?(在我的应用程序中,我通过FireBase登录,然后与回收商一起参加我的活动。也许这会产生某种影响。我真的迷路了)是的。我使用的是:mRecyclerView.setLayoutManager(newlinearlayoutmanager(this));这可能是你的布局中缺少的东西