【问题标题】:RecyclerView is always blank in activityRecyclerView 在活动中总是空白
【发布时间】:2020-08-13 13:47:08
【问题描述】:

当我运行我的应用程序时,RecyclerView 在活动中始终显示为空白。我用普通的RecyclerView 编写了代码,firebaseRecyclerOptions 对FirebaseAdapter 有帮助,但列表中没有显示任何数据。数据在实时数据库和 Cloud FireStore 上都可用,但我在 RecyclerView 中没有任何数据。

适配器类

public class FeedsAdapter  extends FirestoreRecyclerAdapter <Fmodel,FeedsAdapter.myFeedViewHolder> {

    public FeedsAdapter(@NonNull FirestoreRecyclerOptions <Fmodel> options) {
        super ( options );
    }

    @Override
    protected void onBindViewHolder(@NonNull myFeedViewHolder holder, int position, @NonNull Fmodel model) {
        holder.name.setText ( model.getFname () );
        holder.mobile.setText ( model.getFmobile () );
        holder.address.setText ( model.getFaddress ());
        holder.message.setText ( model.getFmessage ());
    }
    @NonNull
    @Override
    public myFeedViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from ( parent.getContext () ).inflate ( R.layout.feedbacks,parent,false );

        return new myFeedViewHolder ( view );
    }

    class myFeedViewHolder extends RecyclerView.ViewHolder{

        TextView name,mobile,address,message;

        public myFeedViewHolder(@NonNull View itemView) {
            super ( itemView );
            name = itemView.findViewById ( R.id.name );
            mobile = itemView.findViewById ( R.id.mobile );
            address = itemView.findViewById ( R.id.address );
            message = itemView.findViewById ( R.id.messege );
        }
    }
}

Activity.xml

 public class FeedsActivity extends AppCompatActivity {

    private FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance (  );
    private CollectionReference collectionReference = firebaseFirestore.collection ( "FeedBacks" );
    private  FeedsAdapter feedsAdapter;

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

        setUpRecyclerView();
  }
    
private void setUpRecyclerView() {
        Query query = collectionReference.orderBy ( "Fname", Query.Direction.ASCENDING );
       FirestoreRecyclerOptions <Fmodel> options = new FirestoreRecyclerOptions.Builder<Fmodel>().setQuery ( query,Fmodel.class ).build ();
        feedsAdapter = new FeedsAdapter ( options );

        feedRecyclerView = (RecyclerView) findViewById ( R.id.feedrecycler );
        feedRecyclerView.setHasFixedSize ( true );
        feedRecyclerView.setLayoutManager ( new LinearLayoutManager ( this ) );
        feedRecyclerView.setAdapter ( feedsAdapter);
    }

    @Override
    protected void onStart() {
        super.onStart ( );
        feedsAdapter.startListening ();
        Toast.makeText ( this, "fetch on", Toast.LENGTH_SHORT ).show ( );

    }

    @Override
    protected void onStop() {
        super.onStop ( );
        feedsAdapter.stopListening ();
        Toast.makeText ( this, "fetch off", Toast.LENGTH_SHORT ).show ( );
    }
}

模型类

  package gk.com.Model;

public class Fmodel {


    private String fname;
    private String faddress;
    private String fmobile;
    private String fmessage;


    public Fmodel() {
    }

    public Fmodel(String fname, String faddress, String fmobile, String fmessage) {
        this.fname = fname;
        this.faddress = faddress;
        this.fmobile = fmobile;
        this.fmessage = fmessage;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public String getFaddress() {
        return faddress;
    }

    public void setFaddress(String faddress) {
        this.faddress = faddress;
    }

    public String getFmobile() {
        return fmobile;
    }

    public void setFmobile(String fmobile) {
        this.fmobile = fmobile;
    }

    public String getFmessage() {
        return fmessage;
    }

    public void setFmessage(String fmessage) {
        this.fmessage = fmessage;
    }
}

【问题讨论】:

  • 感谢您的编辑。

标签: java android firebase google-cloud-firestore


【解决方案1】:

您得到一个“空白”活动很可能是因为以下代码行:

Query query = collectionReference.orderBy ( "Fname", Query.Direction.ASCENDING );

意味着您正在尝试查询FeedBacks 集合并根据Fname 属性对结果进行排序。那行代码让我认为在您的数据库中,您的fname 属性以大写字母开头,这是不正确的,因为您的Fmodel 类中的fname 属性以小写字母开头。要使其工作,两个属性必须匹配。要解决这个问题,请查看我在以下帖子中的回答:

how to read firestore sub-collection and pass it to FirestoreRecyclerOptions

【讨论】:

  • 这对我没有帮助。我在回收站也为空白后进行了更改。即使我删除了升序列表的查询行并将查询作为 CollectionReference 对象传递。
  • 我的问题已解决,谢谢@Alex Mamo,我的 row_item XML 文件有误,再次感谢。
  • 如果您已完成答案中建议的更改,确实可以解决问题。您在 .XML 文件中也存在问题这一事实与最初的问题无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-05
相关资源
最近更新 更多