java - 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();
}
}
}
解决方案
推荐阅读
- sql - 从 SQL Server 中 JSON 中的数组获取值
- c - 具有运算符优先级的宏函数是否显示异常结果?
- python - 日期操作周期
- java - Jersey/REST:在不重复代码的情况下将请求委托给不同的子资源?
- utf-8 - 转换 UTF-8 iso-8859 字节 - String.to_charlist
- reactjs - 我的 browserHistory 和 react-router 有错误
- react-native - Facebook AppLinkData fetchDeferredApplinkData ReactNative
- python - Python Selenium Web Scrape在XPATH中嵌入excel到pandas框架转换逻辑需要
- css - 100% 宽度弹性盒内的额外边距
- python - Django:未使用应用配置注册的自定义管理命令