私は、JSONを使用してサーバーからrecyclerviewにアイテムをロードし、ハッシュマップメソッドでデータを設定するためのAdapterクラスを維持しています。私はrecyclerViewのページネーションを使用しています。各ページには10個のアイテムが含まれ、10個のアイテムに到達するとページが増分されます。RecyclerViewは位置を持つアイテムを更新しません
ロードした後、ユーザーがアイテムをクリックしたときに更新されないという問題があります。
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();
}
}
第二のクラス、ホーム、唯一
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++;
アダプタクラスonBindViewHolder contais:
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でレイアウトを取得するとクリックすると。コンテンツがサーバーに更新され、応答が成功した場合は増分する必要があります。そうでない場合はレイアウトビューを閉じます。問題は、私は挿入のようなカウントを更新しようとしているが、カウントは新しいアイテムとして挿入されています。 – user7427213