android – 创建时不得附加ViewHolder视图

weixin_38055888 2019-09-12 12:23:04
我正在尝试创建一个显示TextView的简单RV.这是我的适配器: public class MyRvAdapter extends RecyclerView.Adapter<MyRvAdapter.ViewHolder> { private String[] mDataset; public static class ViewHolder extends RecyclerView.ViewHolder { // each data item is just a string in this case public TextView mTextView; public ViewHolder(TextView v) { super(v); mTextView = v; } } public MyRvAdapter(String[] myDataset) { mDataset = myDataset; } @NonNull @Override public MyRvAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.text_row_item, parent, false); TextView userNameInList= v.findViewById(R.id.display_name); ViewHolder vh = new ViewHolder(userNameInList); return vh; } @Override public void onBindViewHolder(@NonNull MyRvAdapter.ViewHolder holder, int position) { holder.mTextView.setText(mDataset[position]); } @Override public int getItemCount() { return mDataset.length; } } text_row_item只是一个FrameLayout,里面有一个TextView(“display_name”).这是恐怖: java.lang.IllegalStateException: ViewHolder views must not be attached when created. Ensure that you are not passing 'true' to the attachToRoot parameter of LayoutInflater.inflate(..., boolean attachToRoot) at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6687) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5869) 非常感谢你!
...全文
132 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38060006 2019-09-12
  • 打赏
  • 举报
回复
实际上,你的ViewHolder期望一个View从R.layout.text_row_item膨胀而不是后者的后代.因此,如果您通过膨胀的视图,问题将得到解决. 所以,你应该纠正你的代码: public class MyRvAdapter extends RecyclerView.Adapter<MyRvAdapter.ViewHolder> { private String[] mDataset; public static class ViewHolder extends RecyclerView.ViewHolder { // each data item is just a string in this case public TextView mTextView; public ViewHolder(View v) { super(v); mTextView = v.findViewById(r.id.display_name); } } public MyRvAdapter(String[] myDataset) { mDataset = myDataset; } @NonNull @Override public MyRvAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.text_row_item, parent, false); ViewHolder vh = new ViewHolder(v); return vh; } @Override public void onBindViewHolder(@NonNull MyRvAdapter.ViewHolder holder, int position) { holder.mTextView.setText(mDataset[position]); } @Override public int getItemCount() { return mDataset.length; } }

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧