【问题标题】:Firebase RecyclerView is not showing any data [closed]Firebase RecyclerView 未显示任何数据 [关闭]
【发布时间】:2021-04-24 15:39:02
【问题描述】:

我的 firebase 回收器视图数据未显示我已尝试多种方式但找不到我的答案请帮助 我的 Firebase 回收器视图数据未显示我已尝试多种方式但找不到我的答案请帮助 我的 Firebase 回收器视图数据未显示我已尝试多种方式但找不到我的答案请帮助 我的 Firebase 回收站视图数据未显示我已尝试多种方式,但找不到我的答案,请帮助

Show_Activity.java

public class Show_Activity extends AppCompatActivity {
    private RecyclerView   recyclerView;
    private FirebaseDatabase db = FirebaseDatabase.getInstance();
    private DatabaseReference root = db.getReference().child("Matches");
    private MyAdapter adapter;
    private ArrayList<Model> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_);

        recyclerView = findViewById(R.id.recyclerview);
        list = new ArrayList<>();

        root.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                    Model model = dataSnapshot.getValue(Model.class);
                    list.add( new Model(model.matchname,model.bettingamt));
                    Log.i("THE_CURRENT_USER:::", model.toString());
                }
                LinearLayoutManager im = new LinearLayoutManager((Show_Activity.this));
                recyclerView.setLayoutManager(im);
                adapter = new MyAdapter(list);
                recyclerView.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });
    }
}

MyAdapter.java

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    ArrayList<Model> mList;
    Context context;

    public MyAdapter(Context context , ArrayList<Model> mList){    
        this.mList = mList;
        this.context = context;
    }

    public MyAdapter(ArrayList<Model> list) {

    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.game , parent ,false);

return new MyViewHolder(v);

    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        Model model = mList.get(position);
        holder.matchname.setText(model.getMatchname());
        holder.bettingamount.setText(model.getBettingamt());
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }
    public static  class MyViewHolder extends RecyclerView.ViewHolder{

        TextView matchname , bettingamount;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            matchname = itemView.findViewById(R.id.matchname);
            bettingamount = itemView.findViewById(R.id.bettingamt);
        }
    }
}

模型.java

public class Model {
    public String getMatchname() {
        return matchname;
    }

    public void setMatchname(String matchname) {
        this.matchname = matchname;
    }

    public String getBettingamt() {
        return bettingamt;
    }

    public void setBettingamt(String bettingamt) {
        this.bettingamt = bettingamt;
    }

    public Model(String matchname, String bettingamt) {
        this.matchname = matchname;
        this.bettingamt = bettingamt;
    }

    String matchname , bettingamt;
}

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    看看你的 MyAdapter 构造函数:

    public MyAdapter(Context context , ArrayList<Model> mList){
    
            this.mList = mList;
            this.context = context;
        }
    
    public MyAdapter(ArrayList<Model> list) {
    
        }
    

    看看你在数据准备好后做什么:

    adapter = new MyAdapter(list);
    

    所以,你必须打电话给adapter = new MyAdapter(Show_Activity.this, list);

    【讨论】:

    • 那我现在该怎么办?我应该编辑适配器 = new MyAdapter(list);到适配器 = new MyAdapter(mList); ?
    • new MyAdapter(this, list)
    • 错误:不兼容的类型: 无法转换为上下文适配器 = new MyAdapter(this, mList); ^ 我收到此错误
    • 使用 Show_Activity.this。
    • 谢谢兄弟!!!!!!!!!!!!!!!!!!我从过去 1 周开始寻找解决方案。终于得到了我的答案爱你哥哥?♥♥♥♥
    【解决方案2】:

    您还需要为模型类添加默认构造函数

    public Model(){}
    

    并将adapter = new MyAdapter(list); 更改为adapter = new MyAdapter(this,list);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 2018-08-30
      • 2020-06-25
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多