我正在尝试使用ArrayList
在ListView
中显示RecyclerView
。但是当我通过onPostExecute
和ArrayList
时,它会在Context
方法中给出错误。
我的代码如下,
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;
}
}
答案 0 :(得分:-1)
尝试使用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()
。