java - RecyclerView 在滚动时弄乱了子视图
问题描述
好吧,我尝试将 recyclerview 实现到 Android Studio 中,如下所示:
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.ViewHolder> {
public String[] dataSet;
public Context context;
//---------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------//
public class ViewHolder extends RecyclerView.ViewHolder{
public ImageView image;
public TextView name;
public ViewHolder(View itemView) {
super(itemView);
this.image = itemView.findViewById(R.id.image);
this.name = itemView.findViewById(R.id.name);
}
public void bindData(Object data){
String extractedData = (String)data;
this.name.setText("");
this.name.setText(extractedData);
this.image.getLayoutParams().height = getRandomIntInRange(250, 100);
}
}
//---------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------//
public RecycleViewAdapter(Context context, String[] dataSet){
this.context = context;
this.dataSet = dataSet;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.food_view,parent,false);
ViewHolder viewHolder = new ViewHolder(view);
// Resolves the messed up views after recycling.
viewHolder.setIsRecyclable(false);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.bindData(dataSet[position]);
}
@Override
public int getItemCount() {
return dataSet.length;
}
// Custom method to get a random number between a range
protected int getRandomIntInRange(int max, int min){
Random rdm = new Random();
return rdm.nextInt((max-min)+min)+min;
}
}
不知何故,我注意到,一旦我向上和向下滚动,回收的视图就会变得一团糟......
这是一张没有滚动的图片:
这是滚动之后的一个......你可以看到完全搞砸了:
为什么会发生这种情况,我该如何防止这种情况发生?有没有人有解决方案?
解决方案
推荐阅读
- linux - 如何在没有 SET / SELECTS / -- POSTGRESQL 中的评论的情况下仅对 INSERT 语句进行 pg_dump?
- google-cloud-bigtable - 如何将数据从一个 BigTable 表复制到另一个 BigTable 表
- c# - 单击按钮时屏幕冻结(Xamarin.forms)
- python - Python TCP服务器在没有提示的情况下发送数据
- c++ - 在 C++ 中检查长方体是否尽可能快地重叠(无迭代)
- excel - 激活/选择一个word文档并找到该文档中活动单元格的值
- laravel - 在不带控制器的刀片内部使用查询功能
- sql - 按具有不同值的一列分组 ORACLE
- javascript - 当我支付我的总金额时,零钱是负数
- .net - Azure 函数模板