0

Hallo Jungen Einfügen versuchen Daten in Recyclerview hier dynamisch zu laden ist mein Code:Daten werden nicht dynamisch in RecyclerView von SQLite

PostAdapter.java

public class PostAdapter extends RecyclerView.Adapter<PostAdapter.ViewHolder> { 

ArrayList<Post> listData; 
String rpostid, ruserid, rname, rcat, rdate, rtittle; 

public PostAdapter(ArrayList<Post> postList) { 
    this.listData = postList; 
    notifyDataSetChanged(); 
} 

public PostAdapter(ArrayList<Post> postList,int i) { 
    this.listData = postList; 
    this.notifyItemRangeInserted(getItemCount()+1,i); 
} 

@Override 
public PostAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { 
    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.post_item, viewGroup, false); 
    return new posts(v); 
} 

public class posts extends ViewHolder { 
    TextView tvTittle, tvPostId, tvUseId, tvName, tvCat, tvDate; 

    public posts(View v) { 
     super(v); 
     /* View stuf */ 
    } 
} 

@Override 
public void onBindViewHolder(ViewHolder viewHolder, int position) { 

    final posts holder = (posts) viewHolder; 
    Post post = listData.get(position); 
    rpostid = post.getPost_id(); 
    ruserid = post.getUser_id(); 
    rname = post.getUser_name(); 
    rcat = post.getPost_cat(); 
    rdate = post.getPost_time(); 
    rtittle = post.getPost_title(); 
    holder.tvPostId.setText(rpostid); 
    holder.tvUseId.setText(ruserid); 
    holder.tvName.setText(rname); 
    holder.tvCat.setText(rcat); 
    holder.tvDate.setText(rdate); 
    holder.tvTittle.setText(rtittle); 
} 

@Override 
public int getItemCount() { 
    return listData.size(); 
} 

}

Hier ist mein Code zum Aktualisieren von Daten, wenn swipeToRefresh ist Anruf

public void newPost(int s){ 
    postNew = handler.getNewPost(s);//getting data from DB 
    postList.addAll(postNew); 
    adapter = new PostAdapter(postNew); 
    listView.setAdapter(adapter); 
} 

Hier ist der Kabeljau e für Daten am unteren Rand hinzugefügt, während

Scrollen
public void oldPost(int s){ 
    postNew = handler.getOldPost(s);// getting data from db 
    postList.addAll(postNew); 
    adapter = new PostAdapter(postNew,postNew.size()); 
    listView.setAdapter(adapter); 
} 

Ich möchte auf der Spitze recyclerView dynamisch Einfügen von Daten machen, wenn SwipeToRefresh aufgerufen und wollen nach unten am unteren Rand des recyclerview wenn Scroll alten Daten zeigen. Neue Daten werden eingefügt, aber nicht dynamisch, stattdessen wird recyclerview aktualisiert und an den Anfang gesetzt.

das Ding wie Alles funktioniert gut den Boden recycleview bekommen und die oldPost() aufrufen + Swipe zu aktualisierennewPost() aufrufen. Das Problem ist nur, dass Daten nicht dynamisch geladen werden. Bitte helfen Sie mir dabei. Danke im Voraus.

+0

Um einen Recycler Ansicht eines Datensatzes ändern informieren Sie notifyDatasetChanged verwenden müssen(); http://StackOverflow.com/Questions/24740557/notifydatasetchanged-not-working-on-recyclerview –

+0

Ich rufe notifyDatasetChanged(); siehe postadapter.java –

+0

Ja, aber es heißt im Konstruktor. Dies ist ein weiterer Beitrag darüber, wie man es richtig benutzt. http://stackoverflow.com/questions/31367599/how-to-update-recyclerview-adapter-data –

Antwort

0

UPDATE nach dem edit:

Sie benötigen eine Update-Code aus dem Konstruktor und einem normalen Verfahren zu bewegen, der Konstruktor „konstruiert“, um eine neue Objektinstanz und nicht auf magische Weise etwas aktualisieren:

public void InsertInPoistion(ArrayList<Post> postList,int i) { 
    int begin = listData.size(); 
    this.listData.addAll(postList); 
    int end = listData.size(); 
    this.notifyItemRangeInserted(begin ,end); 
} 

dann diese Methode in Ihrem Fragment/Aktivität nennen:

mAdapter.InsertInPoistion(postNew,postNew.size()); 

mAdapter hier ist eine Referenz, die Sie halten nach dem Adapter für das erste Instanziierung Zeit. Erstellen Sie nur einen neuen Adapter in onCreate()

+0

@ Ramin, in onBindViewHolder alle Werte sind gebunden, aber ich habe dies nicht in meinem Code zeigen, meine Frage zu überprüfen, ich aktualisiert den Codierteil. –

+0

Aber ich weiß nicht, wie man notifyItemRangeInserted(); ... –

+0

habe ich versucht, aber Daten wurden nicht dynamisch hinzugefügt ..... –

0

warum nicht einen Contentprovider und LoaderCallback verwenden. Ich werde das alles automatisch für dich tun.

Kasse mein Beispiel https://github.com/codephillip/CarContentProvider

Es könnte hilfreich sein

+0

Mein aller Code ist Setup und ich bin in der Nähe, um richtig zu arbeiten und wenn ich dieses Beispiel verwenden werde als es dauert ein paar Tage zu verstehen + Implementierung, weil neu in Android ...... –

Verwandte Themen