从json中检索对象

时间:2018-05-01 09:42:21

标签: android json retrofit2

我有一个JSON并使用retrofit制作了RecyclerView。现在我要在recyclerview中的每个项目都有一个详细的活动。所以我用新的呼叫请求为此创建了另一个活动。

这是JSON:

[
      {
        "id": 1,
        "name": "A",
        "imageurl": "http://192.168.43.200/myproject/a.jpg"
      },
      {
        "id": 2,
        "name": "B",
        "imageurl": "http://192.168.43.200/myproject/b.jpg"
      }, 
    ...
    ]

和用于获取所有JSON对象的API接口:

@GET("/myproject/json")
    Call<List<Alphabet>> getAlphabets();

@GET("/myproject/json/{id}")
Call<Alphabet> getAlphabet(@Path("id") int id);

detail.java:

Bundle bundle = getIntent().getExtras();
        id = bundle.getInt("id");

        ApiInterface request = RetrofiBiulder.getClient().create(ApiInterface.class);
        Call<Alphabet> call = request.getAlphabet(id);
        call.enqueue(new Callback<Alphabet>() {
            @Override
            public void onResponse(Call<Alphabet> call, Response<Alphabet> response) {
                Alphabet alphabet = response.body();
                if(response.isSuccessful()){

                    txtId.setText(String.valueOf(alphabet.getProductid()));
                txtNmae.setText(alphabet.getProductname());
                Glide.with(Detail.this).load(alphabet.getImageurl()).into(imgDetail);}

            }

            @Override
            public void onFailure(Call<Alphabet> call, Throwable t) {
            }
        });

为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

如果您的API支持此功能,您可以向改造界面方法添加查询参数:

@GET("/myproject/json")
Call<Alphabet> getAlphabet(@Query("id") String id);

或者,如果您的API期望id作为路径参数:

@GET("/myproject/json/{id}")
Call<Alphabet> getAlphabet(@Path("id") String id);