我是第一次在这里使用Retrofit。
我想将我的列表从 Callback 放到 UsersData 类中。这是不可能的。但是,如果我删除 UsersData 中的所有内容并将 Profile 中的内容放入 UsersData 中,那么它就可以工作。但它不能满足我的需求。我需要能够将 List 从 Callback 放入 UsersData 类。
在我的片段中:
App.getRestClient().getAttendanceService().getUsers(48, new Callback<List<UsersData>>() {
@Override
public void success(List<UsersData> usersDao, Response response) {
String ble = usersDao.get(0).getResults().get(0).getFirstName();
Toast.makeText(getActivity(),ble, Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError error) {
}
});
应用程序
public class App extends Application {
private static RestClient restClient;
public static App instance = null;
public static Context getInstance() {
if (null == instance) {
instance = new App();
}
return instance;
}
@Override
public void onCreate(){
super.onCreate();
restClient = new RestClient();
}
public static RestClient getRestClient(){
return restClient;
}
}
还有我的客户
public class RestClient {
private static final String BASE_URL = "www.Link_to_json.com" ;
private AttendanceService attendanceService;
public RestClient()
{
Gson gson = new GsonBuilder()
.setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
.create();
RestAdapter restAdapter = new RestAdapter.Builder()
//.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(BASE_URL)
//.setClient(new OkClient(new OkHttpClient()))
//.setConverter(new GsonConverter(gson))
.build();
attendanceService = restAdapter.create(AttendanceService.class);
}
public AttendanceService getAttendanceService()
{
return attendanceService;
}
}
我的界面
public interface AttendanceService {
@GET("/GetUsers")
void getUsers(@Query("companyId") int i, Callback<List<UsersData>> u );
}
和用户数据
public class UsersData {
private List<Profile> results;
public List<Profile> getResults() {
return results;
}
}
配置文件数据类:
public String firstName;
public String lastname;
public int userId;
public String userNameId;
...
json 示例:
[
{
"AttendanceDate":null,
"AttendanceStatus":1,
"AttendanceStatusDescription":null,
"CompanyId":48,
"Email":"",
"FirstName":"Sindri",
"Gender":1,
"Gsm":"",
"Id":259,
"LastName":"yeh",
"MiddleName":"",
"Role":0,"UserId":"corp\\marg"
},{
"AttendanceDate":null,
"AttendanceStatus":1,
"AttendanceStatusDescription":null,
"CompanyId":48,
"Email":"",
"FirstName":"David",
"Gender":1,
"Gsm":"",
"Id":165,
"LastName":"Guðmundsson",
"MiddleName":"",
"Role":0,"UserId":"corp\\marg"
}
]
尝试将列表/数组包装在 UsersData 类本身中:
public interface AttendanceService {
@GET("/GetUsers")
void getUsers(@Query("companyId") int i, Callback<UsersData> u );
}
UsersData.java:
public class UsersData {
public Profile[] results;
public class Profile {
public String firstName;
public String lastname;
public int userId;
public String userNameId;
}
}
在回调中,您可以迭代结果数组。 正如 UMESH0492 所评论的,您还应该在 JSON 中命名您的列表:
{
"profile": [
{
"AttendanceDate":null,
"AttendanceStatus":1,
"AttendanceStatusDescription":null,
"CompanyId":48,
"Email":"",
"FirstName":"Sindri",
"Gender":1,
"Gsm":"",
"Id":259,
"LastName":"yeh",
"MiddleName":"",
"Role":0,"UserId":"corp\\marg"
},{
"AttendanceDate":null,
"AttendanceStatus":1,
"AttendanceStatusDescription":null,
"CompanyId":48,
"Email":"",
"FirstName":"David",
"Gender":1,
"Gsm":"",
"Id":165,
"LastName":"Guðmundsson",
"MiddleName":"",
"Role":0,"UserId":"corp\\marg"
}
]
}