2016-11-19 2 views
0

Es gibt keine Fehler in Adapter oder anderen Klassen. Ich habe unterhalb dieser Recycler-Ansicht eine Textansicht zum Testen angebracht und sie wird ohne Recycler-Ansicht angezeigt.Recycler-Ansicht wird nicht angezeigt. Es zeigt mir den Fehler als E/RecyclerView: Kein Adapter angeschlossen; Layout überspringen

Ich übergebe nur ein String-Array mit zwei Werten als Parameter an die Adapterklasse.

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); 
    } 

    } 

Hier ist die Adapterklasse.

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); 


} 
} 

} 
+0

Posten Sie Ihre Code für Adapter-Klasse als auch –

+0

http://www.android-examples.com/android-simple-recyclerview-example-tutorial/ –

+0

Zuerst sollten Sie die doppelte RecyclerView-Initialisierung entfernen. Sie tun es zweimal, einmal in 'initializeRecyclerView' danach später in' onCreateView() ' – Opiatefuchs

Antwort

0

Änderung wie Ihr Konstruktor unter

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

EDIT:

@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; 
} 
+0

Ich änderte, aber immer noch erscheint der Fehler und Recyclerview wird nicht angezeigt. –

+0

versuchen, resview.setHasFixedSize zu entfernen (true); –

+0

und Kommentar initializeRecyclerView Methodenaufruf innerhalb OnCreateView –

0

Versuchen Sie, diese

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); 

      } 
     } 

    } 
    } 
Verwandte Themen