how do call two array within one adapter?

47 views Asked by At

this is my jsonarray

{
"status": "Success",
"message": "2 results found.",
"data": [
    {
        "tag_name": "faverate",
        "orders": [
            {
                "id": "24",
                "order_no": "78707200200724015424",
                "order_date": "24/07/2020",
                "order_start_date": "24/07/2020",
                "name": "Samir M1234",
                "profile_pic": "http://ujalvomigroup.com/pepow/upload/profile_pic/5e5a2b85cdba5.jpeg",
                "phone_no": "xxxxxxxxxx",
                "primary_skill": "Electrician",
                "secondary_skill": "Carpenter",
                "work_location": "Patiala House Courts Complex "
            }


                      {
                "id": "25",

                "order_no": "78707200200724015424",

                "order_date": "24/07/2020",

                "order_start_date": "24/07/2020",

                "name": "amit M1234",

                "profile_pic": "http://ujalvomigroup.com/pepow/upload/profile_pic/5e5a2b85cdba5.jpeg",

                "phone_no": "xxxxxxxxxx",

                "primary_skill": "Electrician",

                "secondary_skill": "Carpenter",

                "work_location": "Patiala House Courts Complex "
            }
        ]
    },
    {
        "tag_name": "sommmm",
        "orders": [
            {
                "id": "23",
                "order_no": "2046049468200724015327",
                "order_date": "24/07/2020",
                "order_start_date": "24/07/2020",
                "name": "Samir M1234",
               
      "profile_pic":"http://ujalvomigroup.com/pepow/upload/profile_pic/5e5a2b85cdba5.jpeg",
                "phone_no": "xxxxxxxxxx",
                "primary_skill": "Electrician",
                "secondary_skill": "Carpenter",
                "work_location": "Patiala House Courts Complex "
            }
        ]
    }
]

}

Adapter.class

public class Inprogress_Adapter extends RecyclerView.Adapter<Inprogress_Adapter.InprogressViewHolder> {

private LayoutInflater inflater;
private List<Track_Inp_Data> emp_sch_data;
Context ctx;
OnItemClickListener mListener;
public interface OnItemClickListener{
    void onViewClick(int position);
    void onClickAvailable(int position);
    void onCallClick(int position);
    void onExtendClick(int position);
    void onPaymentHistoryClick(int position);
}
public void setOnITemClickListener(OnItemClickListener listener){
    mListener = listener;
}

public Inprogress_Adapter(Context ctx,List<Track_Inp_Data> emp_sch_data) {
    this.inflater = inflater.from(ctx);
    this.emp_sch_data = emp_sch_data;
    this.ctx = ctx;
}

@NonNull
@Override
public Inprogress_Adapter.InprogressViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.tracking_inprogress_expans, parent, false);
    InprogressViewHolder holder = new InprogressViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull Inprogress_Adapter.InprogressViewHolder holder, int position) {

        String tag = emp_sch_data.get(position).getTag_name();
        holder.tagname.setText(tag);
        Log.d("tag",tag);

            holder.workerid.setText("#"+emp_sch_data.get(position).getOrders().get(0).getOrder_no());
            holder.date.setText(emp_sch_data.get(position).getOrders().get(0).getOrder_date());
           holder.empdate.setText(emp_sch_data.get(position).getOrders().get(0).getOrder_start_date());
           holder.name.setText(emp_sch_data.get(position).getOrders().get(0).getName());
            holder.skill.setText(emp_sch_data.get(position).getOrders().get(0).getPrimary_skill()+","+emp_sch_data.get(position).getOrders().get(0).getSecondary_skill());
            holder.location.setText(emp_sch_data.get(position).getOrders().get(0).getWork_location());
            Picasso.with(ctx).load(emp_sch_data.get(position).getOrders().get(0).getProfile_pic()).into(holder.profileimage);



}

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

public class InprogressViewHolder extends RecyclerView.ViewHolder {
    TextView workerid,date,empdate,name,skill,location,startdate,enddate,checkavailable,tagname;
    Button pay,paymenthistory,extend;
    ImageView call,profileimage;
    public InprogressViewHolder(@NonNull View itemView) {
        super(itemView);
        workerid=itemView.findViewById(R.id.Bookingid);
        date=itemView.findViewById(R.id.startdate);
        empdate=itemView.findViewById(R.id.enddate);
        name = itemView.findViewById(R.id.firstname);
        skill = itemView.findViewById(R.id.skill);
        location = itemView.findViewById(R.id.location);
        startdate = itemView.findViewById(R.id.startdate);
        enddate = itemView.findViewById(R.id.enddate);
        checkavailable= itemView.findViewById(R.id.checkavailable);
        tagname=itemView.findViewById(R.id.tagname);
        pay = itemView.findViewById(R.id.pay);
        paymenthistory = itemView.findViewById(R.id.paymenthistory);
        extend = itemView.findViewById(R.id.extend);

        call = itemView.findViewById(R.id.call);
        profileimage = itemView.findViewById(R.id.profileimage);

        paymenthistory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mListener !=null){
                    int position = getAdapterPosition();
                    if (position!= RecyclerView.NO_POSITION){
                        mListener.onPaymentHistoryClick(position);
                    }
                }
            }
        });

        extend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mListener !=null){
                    int position = getAdapterPosition();
                    if (position!= RecyclerView.NO_POSITION){
                        mListener.onExtendClick(position);
                    }
                }
            }
        });
        call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mListener !=null){
                    int position = getAdapterPosition();
                    if (position!= RecyclerView.NO_POSITION){
                        mListener.onCallClick(position);
                    }
                }
            }
        });
        checkavailable.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mListener !=null){
                    int position = getAdapterPosition();
                    if (position!= RecyclerView.NO_POSITION){
                        mListener.onClickAvailable(position);
                    }
                }
            }
        });
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mListener !=null){
                    int position = getAdapterPosition();
                    if (position!= RecyclerView.NO_POSITION){
                        mListener.onViewClick(position);
                    }
                }
            }
        });
        Typeface font = Typeface.createFromAsset(ctx.getAssets(),"font/Uber Move Text.ttf");
        workerid.setTypeface(font);
        date.setTypeface(font);
        empdate.setTypeface(font);
        name.setTypeface(font);
         skill.setTypeface(font);
        location.setTypeface(font);
        startdate.setTypeface(font);
        enddate.setTypeface(font);
        paymenthistory.setTypeface(font);
        pay.setTypeface(font);
        extend.setTypeface(font);


    }
}

} Activity.class

 private void getInprogress() {
    jsonObject=new JsonObject();
    jsonObject.addProperty("user_id",userid);
    jsonObject.addProperty("order_status","In Progress");
    RetrofitInterface jsonpost = ServiceGenerator.createService(RetrofitInterface.class,"http://ujalvomigroup.com/");
    Call<Track_Inp_Repo> call = jsonpost.getinprogress(jsonObject);
    call.enqueue(new Callback<Track_Inp_Repo>() {
        @SuppressLint("RestrictedApi")
        @Override
        public void onResponse(Call<Track_Inp_Repo> call, retrofit2.Response<Track_Inp_Repo> response) {
            if (response.isSuccessful()){
                swipeRefreshLayout.setRefreshing(false);
                assert response.body() != null;
                dataLists = response.body().getData();
                schedule_adapter=new Inprogress_Adapter(getContext(),dataLists);
                recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
                recyclerView.setHasFixedSize(true);
                recyclerView.setAdapter(schedule_adapter);
                schedule_adapter.setOnITemClickListener(new Inprogress_Adapter.OnItemClickListener() {
                    @Override
                    public void onViewClick(int position) {
                     //   showUpdateDialog();

                                OrderId = dataLists.get(position).getOrders().get(0).getId();



                    }


                    @Override
                    public void onClickAvailable(int position) {
                        availabledate();

                    }

                    @Override
                    public void onCallClick(int position) {
                        SharedPreferences sharedPreferences = getContext().getSharedPreferences("Callshared",MODE_PRIVATE);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putString("Clicked","call");
                        editor.apply();
                        Intent callIntent = new Intent(Intent.ACTION_CALL);
                          String  Phonenumber = dataLists.get(position).getOrders().get(0).getPhone_no();
                            callIntent.setData(Uri.parse("tel:"+Phonenumber));



                        if (ActivityCompat.checkSelfPermission(getContext(),android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                            if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) getContext(),
                                    android.Manifest.permission.CALL_PHONE)) {
                            } else {
                                ActivityCompat.requestPermissions((Activity) getContext(),
                                        new String[]{android.Manifest.permission.CALL_PHONE},
                                        MY_PERMISSIONS_REQUEST_CALL_PHONE);
                            }
                        }
                        getContext().startActivity(callIntent);
                    }

                    @Override
                    public void onExtendClick(int position) {
                     datePicker();
                    }

                    @Override
                    public void onPaymentHistoryClick(int position) {
                        Dialog dialog = new Dialog(getContext());
                        dialog.setContentView(R.layout.paymenthistory);
                        dialog.show();
                    }
                });
                if (response.body().getData().size()==0){
                    recyclerView.setVisibility(View.GONE);
                    swipeRefreshLayout.setRefreshing(false);
                    // nodata.setVisibility(View.VISIBLE);
                }else {
                    swipeRefreshLayout.setRefreshing(false);
                    // nodata.setVisibility(View.GONE);
                    recyclerView.setVisibility(View.VISIBLE);
                }

            }else {
                swipeRefreshLayout.setRefreshing(false);
                Log.d("else", String.valueOf(response.errorBody()));
            }
        }

        @SuppressLint("RestrictedApi")
        @Override
        public void onFailure(Call<Track_Inp_Repo> call, Throwable t) {
            Log.d("onfail",String.valueOf(t.getMessage()));
            swipeRefreshLayout.setRefreshing(false);

        }
    });

i have tried above code and getting the data in one recyclerview list with tag array but i am unable to display second array with dynamically in recyclerview, it will remove first data (id=24) with second data (id=25) in second arraylist, so i need help with it

Thankyou so much

1

There are 1 answers

1
navylover On

You could add a method in the adapter class as the following:

public void updateData(List<Track_Inp_Data> emp_sch_data) {
    this.emp_sch_data = emp_sch_data;
    notifyDataSetChanged();
}

And call the method when you want to swap data source:

adapter.updateData(secondData);

To append another list, you could refer addAll