【问题标题】:Recycler view not displaying. It shows me the error as E/RecyclerView: No adapter attached; skipping layout回收站视图未显示。它向我显示错误为 E/RecyclerView: No adapter attach;跳过布局
【发布时间】:2016-11-19 11:56:49
【问题描述】:

适配器或任何其他类中没有错误。我在此回收器视图下方附加了一个文本视图以进行测试,它在没有回收器视图的情况下很好地显示。

我只是将带有两个值的字符串数组作为参数传递给适配器类。

    public class HomeFragment extends Fragment {

    private String[] dataset = {"One","Two"};

    private RecyclerView resview;
    private RecyclerView.Adapter madapter;

    private RecyclerView.LayoutManager mlayoutManager;
    private View view;

    public HomeFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        initializeRecyclerView();

        View view = inflater.inflate(R.layout.fragment_home, container, false);

        mlayoutManager = new LinearLayoutManager(getActivity());

        resview.setLayoutManager( mlayoutManager);


        resview = (RecyclerView) view.findViewById(R.id.resview);

        madapter = new ReAdapter(dataset);

        resview.setHasFixedSize(true);

        resview.setAdapter(madapter);

        return view;
    }
    //Even without this initialize method, i am getting this same error
    void initializeRecyclerView() {
        resview = (RecyclerView) view.findViewById(R.id.resview);
        resview.setAdapter(new ReAdapter(dataset));
        resview.setLayoutManager(new LinearLayoutManager(getActivity()));
        resview.setHasFixedSize(true);
    }

   }

这是适配器类。

  public class ReAdapter extends   RecyclerView.Adapter<ReAdapter.Reviewholder> {


String[] dataset1;


public ReAdapter (String[] dataset){


    dataset = this.dataset1;


}



@Override
public Reviewholder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view =         LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclecontent,parent,false);
    Reviewholder holder = new Reviewholder(view);
    return holder;
}



@Override
public void onBindViewHolder(Reviewholder holder, int position) {

    holder.restext.setText(dataset1[position]);

}

@Override
public int getItemCount() {
    return dataset1.length;
}

public class Reviewholder extends RecyclerView.ViewHolder{

public TextView restext;


public Reviewholder(View view) {

    super(view);

    restext = (TextView) view.findViewById(R.id.restext);


}
}

}

【问题讨论】:

  • 也发布适配器类的代码
  • 首先你应该删除加倍的 recyclerView 初始化。你做了两次,一次在initiualizeRecyclerView,然后在onCreateView()
  • @RahulKhurana 刚刚使用适配器类编辑
  • @Opiatefuchs 即使没有这个 initializeRecyclerView() 方法,我仍然会遇到同样的错误。

标签: android android-fragments android-recyclerview


【解决方案1】:

像下面这样改变你的构造函数

public ReAdapter (String[] dataset){
     this.dataset1 = dataset;
}

编辑:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view = inflater.inflate(R.layout.fragment_home, container, false);
    resview = (RecyclerView) view.findViewById(R.id.resview);

    mlayoutManager = new LinearLayoutManager(getActivity());

    resview.setLayoutManager( mlayoutManager);

    madapter = new ReAdapter(dataset);

    resview.setHasFixedSize(true);

    resview.setAdapter(madapter);

    return view;
}

【讨论】:

  • 我改了,但还是出现错误,recyclerview没有显示。
  • 尝试删除 resview.setHasFixedSize(true);
  • 并在onCreateView中注释initializeRecyclerView方法调用
  • 我评论了这两个(hasfixedsize,initializeRecyclerview)但仍然没有变化先生。
  • 即使在删除 initializeRecyclerView() 方法后仍然会出现错误先生。
【解决方案2】:

试试这个

  public class HomeFragment extends Fragment {

    private RecyclerView resview;
    private ReAdapter madapter;
    private LinearLayoutManager mlayoutManager;

    public HomeFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_home, container, false);

        resview = (RecyclerView) view.findViewById(R.id.recycler_view);
        resview.setHasFixedSize(true);

        mlayoutManager = new LinearLayoutManager(getActivity());
        mlayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

        resview.setLayoutManager(mlayoutManager);

        return view;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        String[] dataset = {"One", "Two"};
        madapter = new ReAdapter(dataset);
        resview.setAdapter(madapter);

    }

    class ReAdapter extends RecyclerView.Adapter<ReAdapter.Reviewholder> {

        String[] mDataset;

        public ReAdapter(String[] collection) {

            mDataset = collection;
        }

        @Override
        public Reviewholder onCreateViewHolder(ViewGroup parent, int viewType) {

            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclecontent, parent, false);
            return (new Reviewholder(view));
        }

        @Override
        public void onBindViewHolder(Reviewholder holder, int position) {
            holder.restext.setText(mDataset[position]);
        }

        @Override
        public int getItemCount() {
            return mDataset.length;
        }

        public class Reviewholder extends RecyclerView.ViewHolder {

            public TextView restext;


            public Reviewholder(View view) {

                super(view);
                restext = (TextView) view.findViewById(R.id.restext);

            }
        }

    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2019-07-19
    • 2023-01-18
    • 2021-11-26
    • 1970-01-01
    • 2020-12-21
    • 2015-02-26
    相关资源
    最近更新 更多