【发布时间】:2020-07-02 02:27:21
【问题描述】:
我正在将 Android Studio 和 Firebase 用于社交媒体应用,但我遇到了这个错误:
E/RecyclerView: 没有附加适配器跳过布局
我在 Stack Overflow 上看到了很多问题,但这并没有帮助我解决我的问题。这可能是 Firebase 的问题吗?感谢您给予我的所有帮助。
我的 UsersFragment.java
package com.adamdevmaster.flintblog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class UsersFragment extends Fragment {
RecyclerView recyclerView;
AdapterUsers adapterUsers;
List<ModelUser> userList;
public UsersFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_users, container, false);
recyclerView = view.findViewById(R.id.users_recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
userList = new ArrayList<>();
getAllUsers();
return view;
}
private void getAllUsers() {
final FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
userList.clear();
for (DataSnapshot ds: dataSnapshot.getChildren()) {
ModelUser modelUser = ds.getValue(ModelUser.class);
if (!modelUser.getUid().equals(fUser.getUid())) {
userList.add(modelUser);
}
adapterUsers = new AdapterUsers(getActivity(), userList);
recyclerView.setAdapter(adapterUsers);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
我的 ModelUser.java
String name, email, search, phone, image, cover, uid;
public ModelUser() {
}
public ModelUser(String name, String email, String search, String phone, String image, String cover, String uid) {
this.name = name;
this.email = email;
this.search = search;
this.phone = phone;
this.image = image;
this.cover = cover;
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
我的 AdapterUsers.java
package com.adamdevmaster.flintblog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import java.util.List;
public class AdapterUsers extends RecyclerView.Adapter<AdapterUsers.MyHolder> {
Context context;
List<ModelUser> userList;
public AdapterUsers(Context context, List<ModelUser> userList) {
this.context = context;
this.userList = userList;
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.row_users, viewGroup, false);
return new MyHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {
String userImage = userList.get(i).getImage();
String userName = userList.get(i).getName();
final String userEmail = userList.get(i).getEmail();
myHolder.mNameTv.setText(userName);
myHolder.mEmailTv.setText(userEmail);
try {
Picasso.get().load(userImage)
.placeholder(R.drawable.ic_default_img)
.into(myHolder.mAvatarIv);
}
catch (Exception e) {
}
myHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, ""+userEmail, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return userList.size();
}
class MyHolder extends RecyclerView.ViewHolder {
ImageView mAvatarIv;
TextView mNameTv, mEmailTv;
public MyHolder(@NonNull View itemView) {
super(itemView);
mAvatarIv = itemView.findViewById(R.id.avatarIv);
mNameTv = itemView.findViewById(R.id.nameTv);
mEmailTv = itemView.findViewById(R.id.emailTv);
}
}
}
【问题讨论】:
标签: java android firebase firebase-realtime-database android-recyclerview