【发布时间】:2017-01-17 04:11:07
【问题描述】:
我正在使用 JSON 从服务器将项目加载到 recyclerview 中,维护一个 Adapter 类以通过 hashmap 方法设置数据。我正在为 recyclerView 使用分页。每页包含 10 个项目,达到 10 个项目后页面递增。
问题是,加载后,当用户单击项目时,它没有刷新。
HomeClass 是一个启动器活动:
public class HomeClass extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
sendID(url);
}
public void sendID(final String url){
if (progress == null) {
progress = new ProgressDialog(this);
progress.show();
}
Constant.Home_Posts.clear();
new Thread(new Runnable(){
@Override
public void run() {
///pagecount is 1 in HomeClass by default
JSONObject responseObj = new JSONObject(arg0);
HashMap<String, String> map = new HashMap<String, String>();
map.put(key,value);
Constant.Home_Posts.add(map);
}
}
if (progress!=null) {
if (progress.isShowing()) {
progress.dismiss();
progress = null;
Intent intent = new Intent(HomeClass.this, Home.class);
startActivity(intent);
finish();
}
}
第二个类Home,只包含onBindViewHolder
public class Home extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
}
private void getPostCount(final String URl) {
if (progress == null) {
progress = new ProgressDialog(this);
progress.show();
}
new Thread(new Runnable() {
@Override
public void run() {
viewposition = viewposition + 10;
getPostUrl = "url+userid="+ userID+ "&page="+ page_count;
//pagecount is 2 in 'Home' by default and then icrements
JSONObject responseObj = new JSONObject(arg0);
HashMap<String, String> map = new HashMap<String, String>();
map.put(key,value);
Constant.Home_Posts.add(map);
'
'
}
}
}
page_count++;
适配器类:
class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public void onBindViewHolder(RecyclerView.ViewHolder holder,final int i) {
if (Constant.Home_Posts.size() - 1 == i) {
Constant.Home_Posts.clear();
getPostCount("url+ userID + "&page=" + page_count);
}
//set value using hashmap method from server
viewHolder.imgComment.setText(value) //with integer values
//OmCLick to update datas from user
viewHolder.imgComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get layout view by LayoutIflater and load data from server
// create alert dialog
final AlertDialog alertDialog = alertDialogBuilder.create();
//user can comment anyhting,if success comment value in count
//should increment or comments should not change
sendComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (commentStatus == 0) {
} else {
alertDialog.cancel();
String putLikesValue=(Integer.toString(Integer.parseInt(
Constant.Home_Posts.get(i).get("comments_count"))+1));
viewHolder.txtComment.setText(putLikesValue+"Comments");
notifyDataSetChanged();
notifyItemChanged(i);
});
}
结果是这样的, 旧项目与更新项目(新插入的项目)一起列出。
如何正确插入有位置的项目?
【问题讨论】:
-
我没有得到你想要做的事情
-
数据正在加载 10 个项目/页。如果我只在 API 中增加页面,我可以在 recyclerView 中加载剩余数据(如分页),这很好用。在 RecylerView 中加载项目后,当用户单击使用 EditText 获取布局以进行评论时。内容将更新到服务器,如果响应成功,我需要增加计数,否则关闭布局视图。问题是我尝试像插入一样更新计数,但计数作为新项目插入,即使我在执行 onScroll 时设置了位置,它也丢失了。
标签: android pagination android-recyclerview