Java 异步任务列表视图
我的主窗口上有一个列表视图Java 异步任务列表视图,java,android,Java,Android,我的主窗口上有一个列表视图 lvItems = (ListView) findViewById(R.id.lvItems); new GetAsync(this,lvItems).execute(); 使用asyntask,我希望从数据库中检索数据并将其推送到listview中。当我执行代码时,我的lsitview是空的。有人知道解决办法吗 public class GetAsync extends AsyncTask<Void,ArrayList<Task>,Lis
lvItems = (ListView) findViewById(R.id.lvItems);
new GetAsync(this,lvItems).execute();
使用asyntask,我希望从数据库中检索数据并将其推送到listview中。当我执行代码时,我的lsitview是空的。有人知道解决办法吗
public class GetAsync extends AsyncTask<Void,ArrayList<Task>,List<Task>> {
private Context context;
private ListView listView;
ArrayAdapter<Task> tasks;
public GetAsync(Context context, ListView listview) {
this.context = context;
this.listView = listview;
}
@Override
protected List<Task> doInBackground(Void... voids) {
TaskDbHelper db = new TaskDbHelper(context);
return db.getTasks();
}
@Override
protected void onPreExecute() {
tasks = (ArrayAdapter<Task>) listView.getAdapter();
}
@Override
protected void onPostExecute(List<Task> tasks) {
tasks.addAll(tasks);
}
公共类GetAsync扩展了AsyncTask{
私人语境;
私有列表视图列表视图;
阵列自适应任务;
公共GetAsync(上下文上下文,ListView ListView){
this.context=上下文;
this.listView=listView;
}
@凌驾
受保护列表背景(无效…无效){
TaskDbHelper db=新的TaskDbHelper(上下文);
返回db.getTasks();
}
@凌驾
受保护的void onPreExecute(){
tasks=(ArrayAdapter)listView.getAdapter();
}
@凌驾
受保护的void onPostExecute(列出任务){
tasks.addAll(任务);
}
}
public List getTasks()
{
SQLiteDatabase db=this.getWritableDatabase();
字符串[]列=新字符串[]{“id”、“任务”、“完成”};
字符串prderBy=“任务ASC”;
//Cursor Cursor=db.query(TaskContract.TaskEntry.TABLE_NAME,columns,null,null,null,prderBy,null);
Cursor Cursor=db.rawQuery(“从任务中选择*,其中完成=?”,新字符串[]{“0”});
列表任务=新建ArrayList();
while(cursor.moveToNext())
{
任务t=新任务(cursor.getInt(0),
cursor.getString(1)
,cursor.getInt(2));
任务。添加(t);
}
cursor.close();
返回任务;
}
完成异步任务后更新列表视图的适配器
@Override
protected void onPostExecute(List<Task> tasks) {
tasks.addAll(tasks);
//Update listview adapter . Which already has the updated items
//assuming your listview adapter variable is listViewAdapter
listViewAdapter.notifyDataSetChanged();
}
@覆盖
受保护的void onPostExecute(列出任务){
tasks.addAll(任务);
//更新listview适配器。它已具有更新的项
//假设listview适配器变量为listViewAdapter
listViewAdapter.notifyDataSetChanged();
}
在完成AsyncTask
@Override
protected void onPostExecute(List<Task> tasks) {
tasks.addAll(tasks);
//Update listview adapter . Which already has the updated items
//assuming your listview adapter variable is listViewAdapter
listViewAdapter.notifyDataSetChanged();
}
@覆盖
受保护的void onPostExecute(列出任务){
tasks.addAll(任务);
//更新listview适配器。它已具有更新的项
//假设listview适配器变量为listViewAdapter
listViewAdapter.notifyDataSetChanged();
}
检查此@覆盖
受保护的void onPostExecute(列出任务){
tasks.addAll(任务);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,android.R.id.text1,tasks);
setAdapter(适配器);
}
@覆盖
受保护的void onPostExecute(列出任务){
tasks.addAll(任务);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,android.R.id.text1,tasks);
setAdapter(适配器);
}
显示getTasks()方法显示getTasks()方法
@Override
protected void onPostExecute(List<Task> tasks) {
tasks.addAll(tasks);
ArrayAdapter<Task> adapter = new ArrayAdapter<Task>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, tasks);
listView.setAdapter(adapter);
}