2

我想使用 Retrofit 2 和 Gson(或 GsonFormat,我不太确定)从 API( http://jsonplaceholder.typicode.com/posts
)显示“标题”,我创建了以下类

Modal。爪哇

package arpit.retrodemo;

public class Modal {
    private String title;
    public String getTitle(){
        return title;
    }
}

APIService接口,

package arpit.retrodemo;

import java.util.List;

import retrofit.Call;
import retrofit.http.GET;

public interface APIService {
    @GET("/posts")
    Call<List<Modal>> getDetails();
}


MainActivity.java

package arpit.retrodemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;


import java.util.List;

import retrofit.Call;
import retrofit.Callback;
import retrofit.GsonConverterFactory;
import retrofit.Response;
import retrofit.Retrofit;

public class MainActivity extends AppCompatActivity {

    private static final String ENDPOINT = "http://jsonplaceholder.typicode.com";
    private APIService service;
    private static List<Modal> users;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(ENDPOINT)
                .build();
        service = retrofit.create(APIService.class);
        Call<List<Modal>> userList = service.getDetails();
        userList.enqueue(new Callback<List<Modal>>() {
            @Override
            public void onResponse(Response<List<Modal>> response) {
                if(response.isSuccess()){
                    Log.d("find", "response.isSuccess");
                    // to parse the API reponse(in JSON) to display, say, "title" from the API response
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Log.d("findError", t.getMessage());
            }
        });

    }
}


json格式

[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  },
  {
    "userId": 1,
    "id": 3,
    "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
    "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
  }
]


所以我在 onResponse 方法中从 API 获得响应,但是

我如何将每个标题存储在 Modal.java 类的对象中,并且列表“用户”将包含 Modal.java 的所有对象,以便我以后可以使用“用户”列表上的迭代器。

4

2 回答 2

1

1)。首先,请在您的 Modal 类中添加标题的 setter 函数。

2)。您可以从中找到模态类的列表response.body()。例如。

   @Override
        public void onResponse(Response<List<Modal>> response) {
            if(response.isSuccess()){
                List<Modal> titlesList=response.body();
            }
        }
于 2016-01-16T12:10:31.260 回答
0

如果所有其他事情都很好,您可以使用这段代码。

Type listType = new TypeToken<ArrayList<Modal>>() { // object can be String here
        }.getType();
        List<Modal> list = new Gson().fromJson(response.body().string(), listType);
于 2016-01-16T11:54:36.823 回答