首页 > 解决方案 > 从 GET Method Retrofit Android 获取主键

问题描述

所以我试图获取所有桌子以在 recyclerView 中显示它们(我在没有主键的情况下显示它们)。这行得通。但接下来我需要每个办公桌的 id(主键)。我有以下代码,它给了我 0 作为每张桌子的主键。

这是我 API 中的 Desk 类

    @Entity
    @Table(name = "desk")
    public class DeskModel {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    int desk_id;
    int ordinal_number;
    int available;

    public DeskModel() {
        super();
    }

    public DeskModel(int desk_id, int ordinal_number, int available) {
        super();
        this.desk_id = desk_id;
        this.ordinal_number = ordinal_number;
        this.available = available;
    }

    public int getId() {
        return desk_id;
    }

    public void setId(int desk_id) {
        this.desk_id = desk_id;
    }

    public int getAvailable() {
        return available;
    }

    public void setAvailable(int available) {
        this.available = available;
    }

    public int getOrdinal_number() {
        return ordinal_number;
    }

    public void setOrdinal_number(int ordinal_number) {
        this.ordinal_number = ordinal_number;
    }
    
}

这是我的 Andorid Studio 中的数据台类

data class Desk (
var desk_id : Int,
var ordinal_number : Int,
var available : Int)

这是在Android中获取所有Desks的方法

api.fetchAllDesks().enqueue(object : Callback<List<Desk>> {

            override fun onResponse(
                call: Call<List<Desk>>,
                response: Response<List<Desk>>
            ) {
                for(desk in response.body()!!){
                    deskNumbes.add(desk.ordinal_number.toString()) //array with just ordinal numers
                    desks.add(desk) //array with object Desk
                }

                adapterDesk.notifyDataSetChanged()
            }

            override fun onFailure(call: Call<List<Desk>>, t: Throwable) {
                Log.d("Error", t.message!!)
            }
        })

当我尝试执行以下代码以显示特定办公桌的 id 时,即使它在数据库中有另一个值,它也会返回 0(所有职位都会发生这种情况)

        val deskId = desks[desk].desk_id
        Toast.makeText(this.requireContext(), deskId.toString(), Toast.LENGTH_LONG).show()

我应该怎么做才能获得正确的desk_id?数据库中表中的所有行都与我的类中的名称相对应。

标签: androidkotlinretrofit

解决方案


推荐阅读