首页 > 解决方案 > Firebase Realtime recyclerview 分页

问题描述

我想将 recyclerview 拆分为在列表末尾加载的页面。我在网上没有找到适合我的方法。我是新手。请告诉我你怎么能用我的例子具体做到这一点?我在互联网上阅读了所有内容,但我不明白如何处理我的数据?你能用我的例子解释一下吗?

适配器用户.java

public class AdapterUsers  extends RecyclerView.Adapter<AdapterUsers.MyHolder>{

    Context context;
    List<ModelUser> userList;

    FirebaseAuth firebaseAuth;
    String myUid;


    public AdapterUsers(Context context, List<ModelUser> userList) {
        this.context = context;
        this.userList = userList;

        firebaseAuth = FirebaseAuth.getInstance();
        myUid = firebaseAuth.getUid();
    }

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

        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder holder, final int position) {

        String userImage = userList.get(position).getImage();
        String userName = userList.get(position).getName();
        String userStatus = userList.get(position).getStatus();
        final String hisUID = userList.get(position).getUid();

        holder.mNameTv.setText(userName);
        holder.status.setText(userStatus);
        try {
            Picasso.get().load(userImage).placeholder(R.drawable.ic_image_profile00).into(holder.mAvatarIv);
        }
        catch (Exception e){

            holder.mAvatarIv.setImageResource(R.drawable.ic_image_profile00);
        }
        
    }
    
    @Override
    public int getItemCount() {
        return userList.size();
    }

    class MyHolder extends RecyclerView.ViewHolder{

        ImageView mAvatarIv;
        TextView mNameTv, status;


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

            mAvatarIv = itemView.findViewById(R.id.avatarIv);
            mNameTv = itemView.findViewById(R.id.nameTv);
            status = itemView.findViewById(R.id.status);

        }
    }
}

模型用户.java

public class ModelUser {
    String name, search, status, image, uid, onlineStatus, typeTo;

    public ModelUser() {

    }

    public ModelUser(String name, String search, String status, String image, String uid, String onlineStatus, String typeTo) {
        this.name = name;
        this.search = search;
        this.status = status;
        this.image = image;
        this.uid = uid;
        this.onlineStatus = onlineStatus;
        this.typeTo = typeTo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSearch() {
        return search;
    }

    public void setSearch(String search) {
        this.search = search;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getOnlineStatus() {
        return onlineStatus;
    }

    public void setOnlineStatus(String onlineStatus) {
        this.onlineStatus = onlineStatus;
    }

    public String getTypeTo() {
        return typeTo;
    }

    public void setTypeTo(String typeTo) {
        this.typeTo = typeTo;
    }
}

用户活动.java

public class UsersActivity extends AppCompatActivity {

    FirebaseAuth firebaseAuth;
    FirebaseUser currentUser;

    RecyclerView recyclerView;
    AdapterUsers adapterUsers;
    List<ModelUser> userList;
    
    String myUid;

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

        firebaseAuth = FirebaseAuth.getInstance();
        currentUser = FirebaseAuth.getInstance().getCurrentUser();


        recyclerView = findViewById(R.id.users_recyclerView);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setStackFromEnd(true);

        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(linearLayoutManager);

        userList = new ArrayList<>();
        
        checkUserStatus();

        getAllUsers();

    }
    
    
    private void getAllUsers() {
        FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();

        DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                userList.clear();
                for (DataSnapshot ds: snapshot.getChildren()){
                    ModelUser modelUser = ds.getValue(ModelUser.class);
                    if (!modelUser.getUid().equals(fUser.getUid())){
                        userList.add(modelUser);
                    }

                    adapterUsers = new AdapterUsers(UsersActivity.this, userList);
                    recyclerView.setAdapter(adapterUsers);
                }
            }

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

            }
        });
    }

    private void checkUserStatus() {
        FirebaseUser user = firebaseAuth.getCurrentUser();
        if (user !=null){
            myUid = user.getUid();

        }else {
            startActivity(new Intent(UsersActivity.this, MainActivity.class));
            finish();
        }
    }
    
    

}

标签: javafirebasefirebase-realtime-databaseandroid-recyclerviewpagination

解决方案


推荐阅读