java - 如何将对象的 ArrayList 实现为 RecyclerView ViewHolder 中的视图?
问题描述
我正在尝试通过对象的 ArrayLists 的 ArrayList 填充具有唯一视图(按钮、TextViews、视图等)的 RecyclerView。只要知道第一个 Object 元素实际上是视图的 id。
问题是我不确定如何使用 onBindViewHolder 方法中的 ViewHolder 对象调用特定视图,因为所有视图都在 ArrayList 中初始化。所以这是我尝试过的,但这条线
detailsViewHolder.((TextView) viewTypes.get(i)).setText("A Text");
甚至在语法上都不正确。
private class DetailsAdapter extends RecyclerView.Adapter<DetailsAdapter.DetailsViewHolder> {
private ArrayList<ArrayList<Object>> viewBundle;
public DetailsAdapter(ArrayList<ArrayList<Object>> viewBundle){
this.viewBundle = viewBundle;
viewTypes = new ArrayList<>();
}
public class DetailsViewHolder extends RecyclerView.ViewHolder{
private ArrayList<View> viewTypes;
public DetailsViewHolder(View itemView){
super(itemView);
viewTypes = new ArrayList<>();
for (int i = 0; i < viewBundle.size(); i++) {
viewTypes.add(itemView.findViewById((Integer) viewBundle.get(i).get(0)));
}
}
}
@Override
public int getItemCount() {
return viewBundle.size();
}
@NonNull
@Override
public DetailsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View resItemView = LayoutInflater.from(parent.getContext()).inflate((Integer) viewBundle.get(i).get(1), parent, false);
DetailsViewHolder viewHolder = new DetailsViewHolder(resItemView);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull DetailsViewHolder detailsViewHolder, int i) {
detailsViewHolder.((TextView) viewTypes.get(i)).setText("A Text");
}
}
解决方案
好吧,我让它与静态数组一起工作(不确定 ArrayList)。
public DetailsViewHolder(View itemView){
super(itemView);
viewTypes = new View[viewBundle.size()];
for (int i = 0; i < viewBundle.size(); i++) {
viewTypes[i] = (itemView.findViewById((Integer) viewBundle.get(i).get(0)));
}
}
所以是的,这解决了这个问题。
((TextView) detailsViewHolder.viewTypes[i]).setText("A Text");
推荐阅读
- google-tag-manager - 谷歌标签管理器 - 只允许定义页面上的标签
- google-apps-script - 构建一个 Gmail 插件,无需先打开电子邮件即可打开,并且可以操作标签
- django - 使用 ManyToManyField 时如何更改 Django 管理员的显示
- angular - 将 Angular webapp 上传到 IBM Cloud 会出现 403 错误
- extjs - 将 UTC 日期转换为 DD-MM-YYYY 格式-EXTJS
- c# - 身份验证后的 C# 反向代理
- php - 选择特定单选按钮的值
- ruby-on-rails - Rails 5.2:使用非属性参数调用的危险查询方法(其参数用作原始 SQL 的方法)
- amazon-s3 - Amazon S3 对象到期
- c# - 当应用程序可以自托管或 IIS 时,如何将 NTLM 身份验证添加到 .net 核心