Не обновляется положение адаптера для CardView в Android.

Я настроил recyclerview для одних и тех же данных API на двух фрагменты. После нажатия на одну из карточек появится новая Подробный фрагмент той же карты открыт в другом фрагменте. cardview содержат изображения. После щелчка по одному из изображений мне нужно получить информацию об этой CardView позиции. Но когда я нажимаю на одну из карточек в First Fragment и перехожу к той же карточке position в Second Fragment, я пролистываю на другие карточки и нажимаю Изображение другого CardView Я все еще получаю информацию о той же Карте, на которую щелкнули первой.
Это код для Adapter

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

    private FragmentManager fm;
    private FragmentTransaction tx;
    private ArrayList<StatusEntry> entries;
    private int finalPos,tempPos;
    Context context;
    String People, id,Id;
    SnackBarAlert alertMsg=new SnackBarAlert();
        private String myToken;
    public StatusInfoAdapter(ArrayList<StatusEntry> entries, Context context) {
        this.entries = entries;
        this.context = context;
    }

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

    @Override
    public void onBindViewHolder(ViewHolder holder,int position) {
        StatusEntry entry = entries.get(position);
        tempPos = holder.getAdapterPosition();
         finalPos = tempPos + 1;
        holder.id.setText(entry.getid());
        holder.Idno.setText(entry.getidno());
        holder.fname.setText(entry.getFname());
        holder.lname.setText(entry.getLname());
        holder.people.setText(entry.getPeople());
        noOfPeople = entries.get(position).getPeople();
        fid = entries.get(position).getFyraid();
        Id = entries.get(position).getid();
    }

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

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        public TextView fname;
        public TextView lname;
        public TextView people;
        public TextView d;
        TextView Idno;
        ImageView cancelEntry;
        public ViewHolder(View v) {
            super(v);
            SharedPreferences preferences=context.getSharedPreferences("myPrefs",Context.MODE_PRIVATE);
            fname = (TextView) v.findViewById(R.id.fname);
            lname = (TextView) v.findViewById(R.id.lname);
            people = (TextView) v.findViewById(R.id.adults);
            fyra_id = (TextView) v.findViewById(R.id.fyraid);
            Idno = (TextView) v.findViewById(R.id.Id);
            cancelEntry = (ImageView) v.findViewById(R.id.cancel);
            cancelEntry.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {


                    final AppCompatActivity activity = (AppCompatActivity) v.getContext();
                    final Dialog dialog=new Dialog(activity);
                    dialog.setContentView(R.layout.cancel_reason);
                    dialog.show();
                    Button yes = (Button) dialog.findViewById(R.id.yes);
                    Button  no = (Button) dialog.findViewById(R.id.no);
                    no.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            dialog.cancel();
                        }
                    });
                    yes.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            dialog.cancel();
                            removeFromQueue();
                            alertMsg.infoMessage(v,"Removed from List");
                            entries.remove(tempPos);
                            notifyItemRemoved(tempPos);
                            ChooseTab chooseTab1=new ChooseTab();
                            fm=activity.getSupportFragmentManager();
                            CurrentStatus currentStatus=new CurrentStatus();
                            tx=fm.beginTransaction();
                            tx.detach(currentStatus);
                            tx.attach(currentStatus);
                            tx.replace(R.id.frame,chooseTab1);
                            tx.commit();
                        }
                    });

                }
            });
                   }
    }  

Это код для настройки RecyclerView

JsonArrayRequest request=new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            try{

                for(int i=0;i<response.length();i++)
                {
                    JSONObject object=response.getJSONObject(i);
                    final StatusEntry entry=new StatusEntry();
                    String id=object.getString("fid");
                    Idno=object.getString("idno");
                    JsonObjectRequest(Request.Method.GET,url, null, new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                String first_name=response.getString("firstname");
                                String last_name=response.getString("lastname");
                                String id=response.getString("id");
                                entry.setFname(first_name);
                                entry.setLname(last_name);
                                entry.setid(id);
                                entry.setidNo(Idno);
                                adapter.notifyDataSetChanged();
                                progressDialog.hide();
                            }
                            catch (JSONException e)
                            {
                                e.printStackTrace();
                            }

                        }
                    }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {

                        }
                    })
                    };
                    AppController.getInstance().addToRequestQueue(foodie_request,foodie_data);
                    String no_of_people=object.getString("no_people");
                    entry.setPeople(no_of_people);
                    progressDialog.dismiss();
                    entries.add(entry);
                    adapter = new StatusInfoAdapter(entries, getActivity().getApplicationContext());
                    recyclerView.setAdapter(adapter);

                }


            }catch(JSONException e)
            {
                e.printStackTrace();
            } catch (ParseException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    })
    };
    AppController.getInstance().addToRequestQueue(request,foo_request);

}  

Я получаю одинаковое Idno для всех CardView после перехода на другие карты. Как решить эту проблему?




Ответы (1)


передать модель списка в конструкторе фрагмента во время начала транзакции и получить ее, создав такую ​​же модель в другом фрагменте из конструктора

person Jay Thummar    schedule 22.05.2018
comment
Проблема в том, что я не получаю данные карты о позиции карты. - person Satyam Gondhale; 22.05.2018