[英]how can i call custom adapter from AsyncTask
我正在尝试使用RecyclerView
在ListView
显示ArrayList
。 但是当我传递ArrayList
和Context
时,它在onPostExecute
方法中给我一个错误。
我的代码如下,
class LoadAlltimeTable extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
JSONHttpClient jsonHttpClient = new JSONHttpClient();
UserModel[] user = jsonHttpClient.Get(ServiceUrl.TiMETABLE, nameValuePairs, UserModel[].class);
if (user.length > 0) {
arrayList= new ArrayList<UserModel>();
for (UserModel product : user) {
final TestModel obj= new TestModel();
obj.setName(product.getName());
newList.add(obj);
runOnUiThread(new Runnable(){
@Override
public void run(){
//update ui here
// display toast here
Toast.makeText(TimeTable.this, "Not Null "+ newList.size()+""+obj.getName(), Toast.LENGTH_SHORT).show();
}
});
}
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(TimeTable.this);
progressDialog.setMessage("Loading----");
progressDialog.show();
}
@Override
protected void onPostExecute(String s) {
progressDialog.dismiss();
//here i am getting error
adapter=new TimeTableAdapter(newList,getApplicationContext());
rv.setAdapter(adapter);
}
}
这是我的适配器代码,
public class TimeTableAdapter extends RecyclerView.Adapter<TimeTableAdapter.ContactViewHolder> {
ArrayList<TestModel> list;
Activity activity;
public TimeTableAdapter(ArrayList<TestModel> list, Activity activity) {
this.list = list;
this.activity = activity;
}
}
尝试使用getActivity()
而不是getApplicationContext()
。 您的代码应如下所示:
adapter = new TimeTableAdapter(newList, getActivity());
说明:
您可能会收到错误,因为构造函数如下所示:
public TimeTableAdapter(ArrayList<TestModel> list, Activity activity) {
this.list = list;
this.activity = activity;
}
它需要对象的ArrayList以及一个活动 。 但是,在您的片段中,您需要:
adapter = new TimeTableAdapter(newList, getApplicationContext());
您提供的不是活动而是片段类。 这会产生一个错误(我忘记了哪个),因为您给它的是片段类而不是活动类。 因此,您需要使用getActivity()
而不是getApplicationContext()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.