【问题标题】:Recycler view not showing data on activity回收站视图未显示活动数据
【发布时间】:2018-05-24 15:02:22
【问题描述】:

我正在开发一个应用程序,该应用程序需要从 firebase 获取数据到回收器视图中,但它没有这样做。 该应用程序运行良好,但在回收站视图部分没有显示任何内容。

MainArea.java(onCreate)

protected void onCreate( Bundle savedInstanceState ) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_rating);
        Email=(TextView)findViewById(R.id.Email);
        Fullname=(TextView)findViewById(R.id.Name);
        City=(TextView)findViewById(R.id.City);
        Address=(TextView)findViewById(R.id.Address);
        rating=(TextView)findViewById(R.id.Rating);
        int s=getIntent().getIntExtra("position",0);
        DatabaseReference ref=MainArea.FBRA.getRef(s);
        ss=ref.getKey();
        DatabaseReference ref2= FirebaseDatabase.getInstance().getReference().child("Users").child(ss);
        ref2.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange( DataSnapshot dataSnapshot ) {
                  email=dataSnapshot.child("email").getValue().toString();
                  fullname=dataSnapshot.child("fullname").getValue().toString();
                  city=dataSnapshot.child("city").getValue().toString();
                  address=dataSnapshot.child("address").getValue().toString();
                  Totalrating=dataSnapshot.child("TotalRating").getValue().toString();
                    rating.setText(Totalrating);
                    Email.setText(email);
                    Fullname.setText(fullname);
                    City.setText(city);
                    Address.setText(address);

            }

            @Override
            public void onCancelled( DatabaseError databaseError ) {

            }
        });
        myRef2=FirebaseDatabase.getInstance().getReference("RatingPosts").child(ss);
        Rview=(RecyclerView)findViewById(R.id.recycler);
        Rview.setHasFixedSize(true);
        Rview.setLayoutManager(new LinearLayoutManager(DisplayRating.this));
        FirebaseRecyclerAdapter<dataget,ViewHolder2> Fbra=new FirebaseRecyclerAdapter<dataget, ViewHolder2>(
                dataget.class,
                R.layout.cardr2,
                ViewHolder2.class,
                myRef2
        ) {
            @Override
            protected void populateViewHolder( ViewHolder2 viewHolder, dataget model, int position ) {
                    viewHolder.setAddress(model.getAddress());
                    viewHolder.setPicture(model.getPicture());
                    viewHolder.setRating(model.getRating());

            }
        };
        Rview.setAdapter(Fbra);
     }

ViewHolder

public  static class ViewHolder2 extends RecyclerView.ViewHolder
     {
         View mView;
         Context ctx;
         public ViewHolder2( View itemView ) {
             super(itemView);
             mView=itemView;
             ctx=itemView.getContext();
         }


         public void setAddress( String address ) {
            TextView Add=(TextView)mView.findViewById(R.id.add);
            Add.setText(address);
         }

         public void setPicture( String picture ) {
             ImageView img=(ImageView)mView.findViewById(R.id.img);
             Picasso.with(ctx).load(picture).into(img);
         }

         public void setRating( String rating ) {
                TextView rate=(TextView)mView.findViewById(R.id.ratee);
                rate.setText(rating);
         }
     }

dataget.java

包 com.hitachiapp.hitachi.hitachiapp;

/** * 由 Mohit Gupta 于 23-05-2018 创建。 */

公共类数据获取{

String Address,Picture,Rating;

public dataget( String address, String picture, String rating ) {
    Address = address;
    Picture = picture;
    Rating = rating;
}

public dataget() {
}

public String getAddress() {
    return Address;
}

public void setAddress( String address ) {
    Address = address;
}

public String getPicture() {
    return Picture;
}

public void setPicture( String picture ) {
    Picture = picture;
}

public String getRating() {
    return Rating;
}

public void setRating( String rating ) {
    Rating = rating;
}

}

火力基地结构 this is the image

【问题讨论】:

  • 你试过调用notifyDataSetChanged方法吗?
  • 要这样称呼
  • Firebase ui 依赖项已包含
  • 实际上应用程序包含 2 个回收站视图,一个工作正常,另一个不是

标签: android firebase firebase-realtime-database android-recyclerview


【解决方案1】:

1 - 确保在清单文件中添加权限行

<uses-permission android:name="android.permission.INTERNET" />

2 - 检查您的DatabaseReference。尝试使用FirebaseDatabase.getInstance().getReference("RatingPosts")确认链接是否有效或将数据记录在logcat中

3 - 确保您的数据模型是您的数据库数据模型。 (您的屏幕截图表明孩子有更多孩子,并且您的数据模型显示数据类型)

4 - 确保在适配器之后调用 recycler.setAdapter(adapter);

5 - 确保在 4 号之前拨打 recycler.setLayoutManager(layout);

如果没有日志,您的代码不足以进行调试,但这是人们在使用 firebase 时常犯的错误。

【讨论】:

  • @MohitGupta 如果没有日志,您的代码不足以进行调试,但这是人们在使用 firebase 时常犯的错误。
  • 我尝试了上述解决方案 No 2 当我将数据库引用初始化为 2 时,会显示一些空白行但是当我将其初始化为 FirebaseDatabase.getInstance().getReference("RatingPosts").child( ss);什么都没有.. ss=key 即 B2WKQY ... 现在该做什么@Lucem
  • 请帮助@Lucem
  • 我可以帮助您的唯一方法是,如果您清理代码,在具有独立值@MohitGupta 的单独活动上对其进行测试。要我帮你检查一下吗?
猜你喜欢
  • 2021-08-25
  • 2021-10-01
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
相关资源
最近更新 更多