【发布时间】:2016-11-22 13:56:24
【问题描述】:
大家好,我正在尝试在 Recyclerview 中动态加载数据,这是我的代码:
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();
}
}
这是我在调用 swipeToRefresh 时更新数据的代码
public void newPost(int s){
postNew = handler.getNewPost(s);//getting data from DB
postList.addAll(postNew);
adapter = new PostAdapter(postNew);
listView.setAdapter(adapter);
}
这是滚动时在底部添加数据的代码
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);
}
我想在调用 SwipeToRefresh 时在 recyclerView 顶部动态插入数据,并希望在向下滚动时在 recyclerview 底部显示旧数据。新数据被插入但不是动态的,而是 recyclerview 刷新并进入它的开头。
所有的东西都工作正常,比如进入 recycleview 的底部并调用 oldPost() + 滑动刷新以调用 newPost() 。问题只是数据没有动态加载,请帮助我。提前致谢。
【问题讨论】:
-
要通知数据集更改的回收器视图,您必须使用 notifyDatasetChanged(); stackoverflow.com/questions/24740557/…
-
我正在调用 notifyDatasetChanged();见 postadapter.java
-
是的,但它在构造函数中被调用。这是另一篇关于如何正确使用它的帖子。 stackoverflow.com/questions/31367599/…
标签: android android-recyclerview notifydatasetchanged