E/RecyclerView:没有连接适配器;跳过布局 (Android)

E/RecyclerView: No adapter attached; skipping layout (Android)

在将用户数据加载到名为 (Users.java) 的模型 class 并将此 ArrayList 传递给adapter.I 我正在使用 Firestore。 它早些时候工作,但经过几次测试后停止工作。主 activity 加载后应用程序崩溃。请帮忙。提前致谢。

MainActivity.java

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

    // To make App Bar from Action Bar (AppComp)
    Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(myToolbar);

    mAuth = FirebaseAuth.getInstance();

    mRecyclerView = findViewById(R.id.recyclerView);
    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    // Check if user is signed in (non null) and update UI accordingly.
    FirebaseUser currentUser = mAuth.getCurrentUser();

    if (currentUser == null) {
        Intent authIntent = new Intent(MainActivity.this, SignUpActivity.class);
        startActivity(authIntent);
        finish();
    } else {

        mUsers = new ArrayList<>();
        db.collection("users")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                Log.d(TAG, document.getId() + " => " + document.getData());
                                Users users = document.toObject(Users.class);
                                mUsers.add(users);
                            }
                            mAdapter = new UsersAdapter(MainActivity.this, mUsers);
                            mRecyclerView.setAdapter(mAdapter);
                            ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar9);
                            progressBar.setVisibility(View.INVISIBLE);
                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
                });
    }
}

UsersAdapter.java

public class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UsersViewHolder> {

private Context mContext;
private List<Users> mUsers;

public UsersAdapter(Context context, List<Users> users) {
    mContext = context;
    mUsers = users;
}

@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(mContext).inflate(R.layout.users_card, parent, false);
    return new UsersViewHolder(v);
}

@Override
public void onBindViewHolder(@NonNull UsersViewHolder holder, int position) {
    Users currentUser = mUsers.get(position);
    holder.textViewName.setText(currentUser.getUserName());
    Picasso.get()
            .load(currentUser.getUserImageUrl())
            .fit()
            .centerCrop()
            .into(holder.imageViewPhoto);
}

@Override
public int getItemCount() {
    return mUsers.size();
}

public class UsersViewHolder extends RecyclerView.ViewHolder{

    public ImageView imageViewPhoto;
    public TextView textViewName;

    public UsersViewHolder(View itemView) {
        super(itemView);

        imageViewPhoto = itemView.findViewById(R.id.user_image);
        textViewName = itemView.findViewById(R.id.user_name);

    }
}

}

Logcat

E/RecyclerView: No adapter attached; skipping layout

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sandeeppradhan.sailors, PID: 3286
java.lang.IllegalArgumentException: Path must not be empty.
    at com.squareup.picasso.Picasso.load(Picasso.java:332)
    at com.example.sandeeppradhan.sailors.UsersAdapter.onBindViewHolder(UsersAdapter.java:39)
    at com.example.sandeeppradhan.sailors.UsersAdapter.onBindViewHolder(UsersAdapter.java:17)

尝试这样做

  mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

 mUsers = new ArrayList<>();
    db.collection("users")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d(TAG, document.getId() + " => " + document.getData());
                            Users users = document.toObject(Users.class);
                            mUsers.add(users);
                        }
//HERE
                        mAdapter = new UsersAdapter(MainActivity.this, mUsers);
                        mRecyclerView.setAdapter(mAdapter);
                        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar9);
                        progressBar.setVisibility(View.INVISIBLE);
                    } else {
                        Log.d(TAG, "Error getting documents: ", task.getException());
                    }
                }
            });
}

还要确保带有图像 url 的字符串不为空,在这种情况下,如果某些用户没有 imgurl,只需在我们的 onBindViewHolder 中尝试捕获只需使用 if

检查图像是否为空