【问题标题】:Doesn't show users in RecyclerView while using FirestoreRecyclerAdapter in Android在 Android 中使用 FirestoreRecyclerAdapter 时不在 RecyclerView 中显示用户
【发布时间】:2018-01-13 20:38:14
【问题描述】:

我正在使用 Firestore RecyclerAdapter 在 RecyclerView 中显示用户,它仍然显示一个空白页面,这意味着它无法在 RecyclerView 中检索用户列表。我很困惑为什么它不显示用户。

这是我的代码:

Java 文件 (MainActivity.java)

public class UserSearch extends AppCompatActivity 
{


    private RecyclerView rv;
    private ProgressBar mProgressbar;
    private CollectionReference mUser;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_search);
        rv = (RecyclerView) findViewById(R.id.myrecycler_view);
        rv.setHasFixedSize(true);
        rv.setLayoutManager(new LinearLayoutManager(this));
        mUser = FirebaseFirestore.getInstance().collection("users");
        Query query = mUser;
        FirestoreRecyclerOptions<Users> options = new    
        FirestoreRecyclerOptions.Builder<Users>()
                .setQuery(query, Users.class)
                .build();

        FirestoreRecyclerAdapter adapter = new FirestoreRecyclerAdapter<Users,   
        FriendsHolder>(options)
        {

            @Override
            public FriendsHolder onCreateViewHolder(ViewGroup group, int i) 
            {
                View view = LayoutInflater.from(group.getContext())
                        .inflate(R.layout.list_layout, group, false);
                return new FriendsHolder(view);
            }

            @Override
            public void onError(FirebaseFirestoreException e) 
            {
                Log.e("error", e.getMessage());
            }

            @Override
            protected void onBindViewHolder(FriendsHolder holder, int  
            position,users model) 
            {
                holder.nameText.setText(model.getName());
                holder.emailText.setText(model.getEmail());
            }

        };
        rv.setAdapter(adapter);

    }   
    private class FriendsHolder extends RecyclerView.ViewHolder 
    {
            View  mView;
            public TextView nameText;
            public TextView emailText;

            public FriendsHolder(View itemview) 
            {
                super(itemview);
                mView=itemview;
                nameText=(TextView)mView.findViewById(R.id.single_user_name);
                emailText=(TextView)mView.findViewById(R.id.Email_user);

            }
     } 

这是我的用户类(getter/setter 文件)

public class Users {
    public String Name;
    public String Email;

    public Users(){

    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }


    public String getEmail() {
        return Email;
    }

    public void setEmail(String email) {
        Email = email;
    }

    public Users(String name, String email) {
      this.Name = name;
       this.Email = email;
    }
}

【问题讨论】:

  • 您能发布您当前的 Firestore 结构吗?并确保安全规则允许从该用户集合中读取数据
  • 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
  • 这是您在被要求不要添加乞求消息后第三次添加。
  • 根据您的建议,当我在移动设备上部署应用程序时,它仍然不显示用户列表,它说应用程序不幸停止了。!
  • @AnuragTiwari 好的,只删除这个rv.setHasFixedSize(true); 就可以了

标签: android firebase google-cloud-firestore


【解决方案1】:

为了解决这个问题,改变这个:

  setContentView(R.layout.activity_user_search);
    rv = (RecyclerView) findViewById(R.id.myrecycler_view);
    rv.setHasFixedSize(true);
    rv.setLayoutManager(new LinearLayoutManager(this));
    mUser = FirebaseFirestore.getInstance().collection("users");
    Query query = mUser;
    FirestoreRecyclerOptions<Users> options = new    
    FirestoreRecyclerOptions.Builder<Users>()
            .setQuery(query, Users.class)
            .build();

到这里:

     setContentView(R.layout.activity_user_search);
    rv = (RecyclerView) findViewById(R.id.myrecycler_view);
    rv.setLayoutManager(new LinearLayoutManager(this));
    mUser = FirebaseFirestore.getInstance().collection("users");
    Query query = mUser;
    FirestoreRecyclerOptions<Users> options = new    
    FirestoreRecyclerOptions.Builder<Users>()
            .setQuery(query, Users.class)
            .build();

删除rv.setHasFixedSize(true)

还要在onStart() 中添加adapter.startListening() 和在onStop() 中添加adapter.stopListening()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2020-03-01
    • 2020-06-17
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多