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

Я установил для тех же данных Api на двух . После нажатия на одну из Card, новый фрагмент детали для той же карты открывается на другом фрагменте. содержит изображения. После нажатия на одно из изображений мне нужно получить информацию об этом Положение CardView. Но когда я нажимаю на одну из карт в FirstFragment и перехожу к той же карте position в SecondFragment, но я смахиваю на другие карты и нажимаю на изображение другого 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 после перехода на другие карты. Как решить эту проблему?

0
0
49
1

Ответы 1

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

Проблема в том, что я не получаю данные карты о позиции карты.

Satyam Gondhale 22.05.2018 11:48

Другие вопросы по теме