Recycler视图不显示。它显示错误为E/RecyclerView:没有附加适配器;跳过布局
适配器或任何其他类中没有错误。我在这个回收站视图下面附加了一个文本视图进行测试,并且很好地显示没有回收站视图。Recycler视图不显示。它显示错误为E/RecyclerView:没有附加适配器;跳过布局
我只是传递一个字符串数组有两个值作为参数传递给适配器类。
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);
}
}
}
改变你的构造类似下面
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); –
和评论initializeRecyclerView方法调用onCreateView –
试试这个
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);
}
}
}
}
发表您的适配器类代码以及 –
http://www.android-examples.com/android-simple-recyclerview-example-tutorial/ –
首先你应该删除doubled recyclerView的初始化。您在'initiualizeRecyclerView'后来在'onCreateView()' – Opiatefuchs