【问题标题】:How to get last element in ArrayList using Retrofit如何使用 Retrofit 获取 ArrayList 中的最后一个元素
【发布时间】:2019-11-16 13:07:36
【问题描述】:

我正在使用改造从服务器获取数据。我想从我的arrayList 中获取最后一个元素,该怎么做?

我已经阅读了如何从这个问题How to get the last value of an 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 是浮点类型。

我应该把 list.get(list.size()-1; 放在哪里?

【问题讨论】:

    标签: java android-studio arraylist retrofit2


    【解决方案1】:

    在改造电话的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 对象

    【讨论】:

    • 在哪里使用mKoor,它不适合适配器。
    • 从你想从ArrayList中获取最后一个元素的问题中,使用mKoor作为最后一个元素
    • 我想在recyclerview中显示它,我把那个mKoor放在哪里了?
    • 当我将 mKoor 放入适配器时出现错误,无法应用
    • 然后更改您的适配器构造函数
    【解决方案2】:

    你可以做到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()));
            }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2020-04-06
    • 2020-03-28
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多