java - 访问以编程方式创建的 recyclerview 的子项(Chip)
问题描述
在 MainActivity 中,我创建了一个 Array of Array of Chip 并膨胀到 Recyclerview。在 RecyclerAdapter 内部,我必须删除芯片的父级才能将每个 Array 放入 ChipGroup 中。现在我需要在 MainActivity 中获取所有 ChipGroup(及其芯片)。我已经尝试过ChipGroup cg = (ChipGroup) findElementByID(R.id.chip_row_chipgroup)
,但只检索了第一个 ChipGroup(显然是因为我删除了其余部分的父级)
RecyclerAdapter.java
public class ChipSelectAdapter extends RecyclerView.Adapter<ChipSelectAdapter.ViewHolder> {
private ArrayList<ArrayList<Chip>> items;
private Context context;
public ChipSelectAdapter(Context context, ArrayList<ArrayList<Chip>> chips) {
this.context = context;
this.items = chips;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.chip_row, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
viewHolder.setIsRecyclable(false);
for (Chip chip : items.get(position))
{
if(chip.getParent() != null)
{
((ViewGroup)chip.getParent()).removeView(chip);
}
viewHolder.chipGroup.addView(chip);
}
// listener
viewHolder.itemView.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do something!
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ChipGroup chipGroup;
public ViewHolder(View view) {
super(view);
chipGroup = (ChipGroup) view.findViewById(R.id.chip_row_chipgroup);
}
}
}
解决方案
推荐阅读
- heroku - Heroku Webhook 有时会失败
- c# - 覆盖 azure app 服务应用程序设置中的数组
- perl - Perl - 比较
散列键和值 - c# - 比较两个数据表并根据C#中的列名插入另一个表
- android - Facebook 和 LinkedIn 集成在 beta 版本中不起作用
- android - android:ellipsize="marquee" 不工作
- r - 将XML提取到R中的数据框
- laravel - Laravel:带有分页参数的 API 响应
- java - Java - 存储在内存中的成员变量的引用在哪里?
- node.js - 未找到模块:错误:将 nodejs 版本更新为 10.0 后无法解析“firebase”