0

I'm using retrofit to fetch data from server. I want to get last element from my arrayList, how to do that?

I already read how to get last element from this quetsion How to get the last value of an ArrayList but it won't work.

This is my JSON Object http://ipsta.tech/koor.php

This my adapter class

    private Context context;

    public KinectAdapter(List<Koor> koorList, Context context) {
        this.koorList = Collections.singletonList(koorList);
        this.context = context;
         
        }

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

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    holder.x.setText(String.valueOf(koorList.get(position).getX()));
    holder.y.setText(String.valueOf(koorList.get(position).getY()));
}

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

public static class ViewHolder extends RecyclerView.ViewHolder{

    public TextView x,y;

    public ViewHolder(View itemView) {
        super(itemView);

        x = (TextView) itemView.findViewById(R.id.tvX);
        y = (TextView) itemView.findViewById(R.id.tvY);
    }
}

And this is my class

        koorArrayList = new ArrayList<>();
        progressDialog.setTitle("Displaying data");
        progressDialog.setMessage("Loading ...");
        progressDialog.show();

        ApiInterface apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
        Call<List<Koor>> call = apiInterface.getAllDataKoor();
        call.enqueue(new Callback<List<Koor>>() {
            @Override
            public void onResponse(Call<List<Koor>> call, Response<List<Koor>> response) {
                koorArrayList = response.body();
Koor e = koorArrayList.get(koorArrayList.size() - 1);
                    KinectAdapter foodAdapter = new KinectAdapter(e, Kinect.this);
                    recyclerView.setLayoutManager(new LinearLayoutManager(Kinect.this));
                    recyclerView.setItemAnimator(new DefaultItemAnimator());
                    recyclerView.setAdapter(foodAdapter);
                    progressDialog.dismiss();
                }

            @Override
            public void onFailure(Call<List<Koor>> call, Throwable t) {
                Toast.makeText(Kinect.this, t.getMessage(), Toast.LENGTH_SHORT).show();
                progressDialog.dismiss();
            }

this is my Koor class:

public class Koor {
    @SerializedName("x")
    private float x;
    @SerializedName("y")
    private float y;

    public Koor(float x, float y, String time) {
        this.x = x;
        this.y = y;
    }

    public float getX() {
        return x;
    }

    public float getY() {
        return y;
    }

and also my output JSONobject is float type.

Where should i place list.get(list.size()-1; ?

Basi
  • 3,009
  • 23
  • 28
Enryu
  • 91
  • 11

2 Answers2

1

You can achieve that Arraylist.size()

        @Override
            public void onResponse(Call<List<Koor>> call, Response<List<Koor>> response) {
                koorArrayList = response.body();
                 Koor e = koorArrayList.get(koorArrayList.size() - 1);
                }

or you can simply access in Your adapter

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
--------******************---------------------
 Koor e = koorList.get(koorList.size() - 1);
--------******************---------------------  
    holder.x.setText(String.valueOf(koorList.get(position).getX()));
    holder.y.setText(String.valueOf(koorList.get(position).getY()));
        }
Chanaka Weerasinghe
  • 5,404
  • 2
  • 26
  • 39
  • Comments are not for extended discussion; this conversation has been [moved to chat](https://chat.stackoverflow.com/rooms/196226/discussion-on-answer-by-orbit-how-to-get-last-element-in-arraylist-using-retrofi). – Samuel Liew Jul 09 '19 at 23:25
1

use it in onResponse of retrofit call

call.enqueue(new Callback<List<Koor>>() {
            @Override
            public void onResponse(Call<List<Koor>> call, Response<List<Koor>> response) 
               {
                koorArrayList = response.body();
                 Koor mKoor = koorArrayList.get(koorArrayList.size() - 1);
                }

          ..............

in mKoor you have last Koor object from Koor List

Basi
  • 3,009
  • 23
  • 28