2016-12-12 3 views
2

Ich habe ein Fragment mit einer recyclerview. Hier verwende ich eine benutzerdefinierte Methode, um den Adapter mit neuen dataset zu aktualisieren.So rufen Sie eine Methode von RecyclerView Adapter in einem Fragment

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter .ViewHolder>{ 
       ..... 
    public void addNewDataset(ArrayList<Integer> data) { 
     ...... 
     notifyDataSetChanged(); 
    } 
} 

Ich habe die Methode wie folgt in meinem Fragment genannt.

myRecyclerAdapter.addNewDataset(data); 

Bitte helfen Sie mir, Vielen Dank im Voraus.

+0

myRecyclerAdapter.addNewDataset (Index) genannt wird oder nicht zu werfen ?? – sasikumar

+0

Compiler zeigt "kann Methode nicht auflösen myRecyclerApater.addNewDataSet()" Fehlermeldung – kashyap

+1

scheint, als ob Sie versuchen, Index zu übergeben (was ein "int" angibt), aber "addNewDataset" erwartet eine 'ArrayList' von' 'Typ so Erstellen Sie eine geeignete Methode mit dem erforderlichen Parametertyp und fügen Sie immer die vollständigen Details hinzu. Wir wissen nicht, was "Index" usw. ist. –

Antwort

2

Versuchen Sie recyclerView adpter als Call-Methode wie dieser

((MyRecyclerAdapter)recyclerView.getAdapter()).addNewDataset(data); 

Compiler Suche addNewDataset() -Methode in Standardadapter

0

Machen Sie öffentliche Methode in Adapter.

public void addNewDataset(ArrayList<Integer> data) { 
     ...... 
     notifyDataSetChanged(); 
    } 

Jetzt Objekt des Adapters in Fragmente machen wie:

MyAdapter adapter = new MyAdapter(); //make object of adpater like this 
adapter.addNewDartaset(data); 
0

Bevor diese addnewDataset Aufruf bitte Daten überprüfen Referenzobjekt ist nicht null Wert.

if(data!=null){ 
    myRecyclerAdapter.addNewDataset(data);  
} 

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter .ViewHolder>{ 
    private ArrayList<Integer> mData; 
       ..... 
    public void addNewDataset(ArrayList<Integer> data) { 
     if(mData==null){ 
     mData = new ArrayList<Integer>(); 
     } 
     //If in case you are passing all new array list of integers 
     mData = data; 
     //If you want to add new one data to existing array list 
     mData.addAll(data); 

     //Use one condition of code from above on the basis of your requirement. 
     ...... 
     notifyDataSetChanged(); 
    } 
} 
+0

Compiler identifiziert das myRecyclerAdapter.addNewDataset (Daten) nicht; – kashyap

+0

addNewDataset (Daten) – kashyap

+0

Fügen Sie dann mehr Code für den Adapter hinzu, wie Sie ihn initialisieren und ein anderes Setup für RecyclerView in Bezug auf LayoutManager? –

Verwandte Themen