Как получить последний элемент в ArrayList с помощью Retrofit [решено] - PullRequest
0 голосов
/ 06 июля 2019

Я использую модификацию для получения данных с сервера.Я хочу получить последний элемент из моего arrayList, как это сделать?

Я уже читал, как получить последний элемент из этого запроса Как получить последнее значение ArrayList , но он выигралне работает.

Это мой объект JSON http://ipsta.tech/koor.php

Это мой класс адаптера

    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);
    }
}

А это мой класс

        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();
            }

это мой класс Koor:

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;
    }

, а также мой выходной JSONobject имеет тип float.

Где я должен разместить list.get (list.size () - 1;

Ответы [ 3 ]

2 голосов
/ 06 июля 2019

Вы можете достичь этого Arraylist.size()

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

или просто получить доступ в свой адаптер

@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()));
        }
0 голосов
/ 06 июля 2019

используйте его в onResponse модернизации вызова

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);
                }

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

в mKoor у вас есть последний объект Koor из списка Koor

0 голосов
/ 06 июля 2019

При успешном ответе onResponse метод вызывается:

public void onResponse(Call<List<Koor>> call, Response<List<Koor>> {
     YourDatatype obj=list.get(list.size()-1).getVar;
 }
...