有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java RecyclerView在活动中始终为空

当我运行应用程序时,RecyclerView在活动中总是显示为空。我用普通的RecyclerView和firebaseRecyclerOptions编写了代码,但列表中没有显示任何数据。数据在实时数据库和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 );
        }
    }
}

活动。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;
    }
}

共 (1) 个答案

  1. # 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