0

Was will ich wissen, ist, wenn ich einen Adapter an einen recyclerview wie folgt festgelegt:Kann ich ein Dataset in einem benutzerdefinierten Objekt ändern und dann den Adapter benachrichtigen?

mRecyclerView.setAdapter(new myRecyclerAdapter(mCustomObject.getDataSet())); 

Kann ich den Datensatz aktualisieren und den Adapter wie dies mitteilen?

mCustomObject.getDataSet().add(XPTO); 
myRecyclerAdapter.notifyDataSetChanged(); 

Oder muss ich den Datensatz in den Adapter bekommen?

Vielen Dank im Voraus!

+0

Verwendung 'gettter setter' und erhalten Sie Ihre Daten-Set-Klasse auf der Position und die neuen Daten setzen, rufen und' notifyDataSetChanged(); ' –

+0

Sorry, ich verstehe didnt :( – Informatheus

Antwort

2

Wenn mCustomObject.getDataSet() immer das gleiche Objekt zurückgibt und kein neues Objekt erstellt, sollte das ausreichen. Wenn jedes Mal ein neues Objekt zurückgegeben wird, kann der Adapter die anzuzeigenden Werte nicht aktualisieren.

+0

Danke, ich denke, das ist die Antwort Ich brauche das. Denn ich brauche dieses Dataset innerhalb des Objekts. – Informatheus

+0

In der Tat: Ein Vorschlag: Es könnte einfacher für Sie sein, ein 'myRecylerAdapter.setData (mCustomObject) 'zu haben und intern die benötigten Daten (' mCustomObject.getDataSet() ') zu bekommen in diesem Fall) –

1

Es gibt mehrere Methoden notify***(). Um es effizient zu nutzen, verwenden Sie es mit Position.

+0

Ich weiß, ich war einfach einfacher – Informatheus

0

annehmen, dass Sie wie Ihre Daten in einer Liste haben

List<MyData> dataSet; 

und MyData ist wie

public class MyData { 
String name; 
String id; 
public MyData(String n,String i){ 
this.name=n; 
this.id=i; 
} 
//getter setter 
public void setName(String n){ 
name=n; 
} 
public String getName(){ 
return name; 
} 
. 
. 
. 
//Creates Empty Constructor 
public MyData(){ 
} 

MyData mydata=new MyData(); 
mydata.setName("One"); 
mydata.setId("one"); 
dataSet.add(mydata); 
//for more data add the data in a loop. 

stellen Sie den Adapter die Daten festgelegt.

MyData mydata=(MyData)datas.get(position); 
String name1 =mydata.getName(); //get your name here 
mydata.setName("give a diffrent name"); //you changed the name on this position 
notifyDataSetChanged(); 
+0

Lässt annehmen, dass ich bereits den Adapter eingestellt habe. Das RecyclerView zeigt bereits die itens. So, der Benutzer fügt ein Element der Liste hinzu. Meine Frage ist: - Muss ich dieses neue Element zur Liste im Adapter hinzufügen? - oder kann ich dieses neue Element auf die Liste innerhalb des Objekts setzen und der Adapter kennt seine Quelle und aktualisiert sich selbst korrekt? – Informatheus