我正在开发一个类似社交媒体的应用程序。我设法从数据库中检索单个值,并将其显示在回收器视图中。
但是,我不知道如何检索Images的Uris列表来填充回收器视图。
下面是我的onBindViewHolder代码片段:
@Override
protected void onBindViewHolder(@NonNull PostsViewHolder holder, final int position, @NonNull Posts model) {
holder.setUserName(model.getUserName());
holder.setProfileImage(model.getProfileImage());
holder.setOpinionContent(model.getOpinionContent());
holder.mView.findViewById(R.id.profile_image).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userId = getRef(position).getKey(); //unique user id for every user
String publisherId = holder.setUserId(model.getUserId());
Intent profileIntent = new Intent(getActivity(), FriendProfile.class);
profileIntent.putExtra("userId", publisherId);
startActivity(profileIntent);
}
});
}和我的ViewHolder:
public static class PostsViewHolder extends RecyclerView.ViewHolder {
View mView;
public PostsViewHolder(@NonNull View itemView) {
super(itemView);
mView = itemView;
}
public void setProfileImage(String profileImage) {
ImageView myImage = mView.findViewById(R.id.profile_image);
Picasso.get().load(profileImage).placeholder(R.drawable.ic_baseline_image_24).into(myImage);
}
public void setUserName(String userName) {
TextView myName = mView.findViewById(R.id.userName);
myName.setText(userName);
}
public void setOpinionContent(String opinionContent) {
TextView myContent = mView.findViewById(R.id.opinion_content);
myContent.setText(opinionContent);
}
public String setUserId(String userId) {
userId = userId;
return userId;
}
}和我的模型类:
package com.example.domino;
public class Posts {
String profileImage;
String userName;
String OpinionContent;
String userId;
public Posts(){
}
public Posts(String profileImage, String userName, String opinionContent, String userId) {
this.profileImage = profileImage;
this.userName = userName;
OpinionContent = opinionContent;
this.userId = userId;
}
public String getProfileImage() {
return profileImage;
}
public void setProfileImage(String profileImage) {
this.profileImage = profileImage;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOpinionContent() {
return OpinionContent;
}
public void setOpinionContent(String opinionContent) {
OpinionContent = opinionContent;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}和我的Firebase数据库:

因此,我想用多个图像填充回收器视图,为此,我需要能够使用我与回收器适配器一起使用的模型类配置我的数据库uri列表。
发布于 2021-07-03 02:00:39
我认为在ViewHolder的创建和赋值上有一个错误的实现。你不应该像每次从资源中获得的文本视图那样链接属性。当使用构造函数初始化时,尝试将它们全部获取。
package com.pos.aero;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.squareup.picasso.Picasso;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class PostViewAdapter extends RecyclerView.Adapter<PostViewAdapter.PostsViewHolder> {
List<Model> list;
public PostViewAdapter(List<PostalAddress> list){
this.list = list;
}
@NonNull
@NotNull
@Override
public PostsViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup viewGroup, int i) {
return null;
}
@Override
public void onBindViewHolder(@NonNull @NotNull PostsViewHolder postsViewHolder, int i) {
Model model = list.get(i);
Picasso.get().load(model.getProfileImage()).placeholder(R.drawable.ic_baseline_image_24).into(postsViewHolder.myImage);
postsViewHolder.myName.setText(model.getUserName());
postsViewHolder.myContent.setText(model.getOpinionContent());
}
@Override
public int getItemCount() {
return list.size();
}
class PostsViewHolder extends RecyclerView.ViewHolder {
ImageView myImage;
TextView myName;
TextView myContent;
public PostsViewHolder(@NonNull @NotNull View itemView) {
super(itemView);
myImage = itemView.findViewById(R.id.profile_image);
myName = itemView.findViewById(R.id.userName);
myContent = itemView.findViewById(R.id.opinion_content);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// OnClick Listener implements here
}
});
}
}
}尝试单击内部类RecyclerView构造函数方法中的listerner。
每次滚动时,onBindViewHolder都会调用该方法并更新viewHolder。
相同的视图持有者对资源重复,但对数据不重复。您必须在onBindViewHolder中链接这些数据。
我已经在这里编辑了你的回收器并更新了。请试试这条路。如果有任何问题,请告诉我。
https://stackoverflow.com/questions/68229298
复制相似问题