所以我试图用 recyclerview 创建一个 gridlayout,每个网格代表一个 cardview。我正在通过尝试在预期位置加载数字图像(如 0,1,2....)来测试它。但是数字只是在有线的地方不停地跳来跳去,有时会重复自己。我猜这是一个适配器问题。你能看看我的代码并告诉我哪里错了吗。
public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> {
private Context context;
String[] numbers;
public GridAdapter(Context context){
super();
this.context=context;
}
@Override
public GridAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.grid, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(GridAdapter.ViewHolder viewHolder, int i) {
String[] numbers={//contains url's for number images strating from 0};
Picasso.with(context).load(numbers[i]).into(ViewHolder.imageView);
}
@Override
public int getItemCount() {
return return numbers.length;
}
static class ViewHolder extends RecyclerView.ViewHolder{
public static ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
imageView = (ImageView)itemView.findViewById(R.id.image);
}
}
}
顺便说一句,数字数组由主 Activity 中的异步任务填充,recyclerview 和布局管理器在 onCreate 中设置,适配器在异步任务的 onPostExecute 中设置。
最佳答案
您的 ViewHolder
无法正常工作。对 ImageView
的引用不应该是 static
因为您将有多个 ViewHolders
用于列表,您将无法以这种方式存储引用.
修复您的 ViewHolder
,它将正常工作。
请在此处查看示例:https://developer.android.com/training/material/lists-cards.html
关于android - RecyclerView 没有在预期的位置显示所需的卡片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768368/