[英]Asynctask listview
我在主窗口上有一個列表視圖
lvItems = (ListView) findViewById(R.id.lvItems);
new GetAsync(this,lvItems).execute();
和我的異步任務,我想從我的數據庫中檢索數據,並將其推入我的列表視圖。 當我執行代碼時,我的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);
}
}
public List<Task> getTasks()
{
SQLiteDatabase db = this.getWritableDatabase();
String[] columns = new String[] {"id","task","complete"};
String prderBy = "task ASC";
// Cursor cursor = db.query(TaskContract.TaskEntry.TABLE_NAME,columns,null,null,null,null,prderBy,null);
Cursor cursor = db.rawQuery("select * from task where complete = ?",new String[]{"0"});
List<Task> tasks = new ArrayList<>();
while (cursor.moveToNext())
{
Task t = new Task(cursor.getInt(0),
cursor.getString(1)
,cursor.getInt(2));
tasks.add(t);
}
cursor.close();
return tasks;
}
完成AsyncTask
后,更新ListView
的適配器
@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();
}
檢查此參考鏈接
@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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.