Java asynctask类未将数据返回到片段
我正在尝试从AsyncTask类中的API获取数据,并将数据返回到一个片段,该片段中的数据显示在RecyclerView中。但是is数据总是空的,片段总是空的 看看我的代码 我的异步任务类:Java asynctask类未将数据返回到片段,java,android,api,android-asynctask,retrofit,Java,Android,Api,Android Asynctask,Retrofit,我正在尝试从AsyncTask类中的API获取数据,并将数据返回到一个片段,该片段中的数据显示在RecyclerView中。但是is数据总是空的,片段总是空的 看看我的代码 我的异步任务类: public class EmployeesData extends AsyncTask<Void, Void, List<Employee>>{ List<Employee> data = new ArrayList<>(); EmployeesFragm
public class EmployeesData extends AsyncTask<Void, Void, List<Employee>>{
List<Employee> data = new ArrayList<>();
EmployeesFragment emp;
public EmployeesData (EmployeesFragment emp){
this.emp= emp;
}
@Override
protected List<Employee> doInBackground(Void... arg0) {
RestService restService = new RestService();
try {
restService.getService().getEmployees(new Callback<List<Employee>>() {
@Override
public void success(List<Employee> employee, Response response) {
data = employee;
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(emp.getContext(), error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
} catch (Exception ex) {
Toast.makeText(emp.getContext(), ex.getMessage().toString(), Toast.LENGTH_LONG).show();
}
return data;
}
@Override
protected void onPostExecute(List<Employee> data) {
super.onPostExecute(data);
emp.setList(data);
}
}
我的员工服务界面:
public interface EmployeesService {
@GET("/api/employees")
public void getEmployees(Callback<List<Employee>> callback);
}
有人能指出我哪里出了问题吗?我很感激你的帮助
谢谢你首先,你不需要改装 可能就是这样
private EmployeesRvAdapter adapter;
public void fireYourAsyncTask() {
EmployeesService service = new RestService().getService();
try {
service.getEmployees(new Callback<List<Employee>>() {
@Override
public void success(List<Employee> employee, Response response) {
employees.clear();
employees.addAll(employee);
adapter.notifyDatSetChanged();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(emp.getContext(), error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
无论在何处添加数据,这都不是添加到ArrayList的方式
employees= data;
这就是重新分配。这是加法
employees.clear();
employees.addAll(data);
谢谢它工作得很好。您能告诉我们如何将从API获取的数据存储为缓存数据,以便即使在脱机时也可以访问它吗?简短回答:SQLite、Realm database或Firebase。尽管如此,请随意发布一个单独的问题
private EmployeesRvAdapter adapter;
public void fireYourAsyncTask() {
EmployeesService service = new RestService().getService();
try {
service.getEmployees(new Callback<List<Employee>>() {
@Override
public void success(List<Employee> employee, Response response) {
employees.clear();
employees.addAll(employee);
adapter.notifyDatSetChanged();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(emp.getContext(), error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
public class EmployeesFragment extends Fragment implements Callback<List<Employee>> {
public void fireYourAsyncTask() {
EmployeesService service = new RestService().getService();
service.getEmployees(this);
}
employees= data;
employees.clear();
employees.addAll(data);