2017-01-24 4 views
0

は、私は私のメインウィンドウAsynctaskのリストビュー

lvItems = (ListView) findViewById(R.id.lvItems); 
    new GetAsync(this,lvItems).execute(); 

上のリストビューを持っているし、私のasyntaskと私は私のDBからデータを取得し、私のリストビューでそれをプッシュします。コードを実行すると、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; 
} 
+1

は(私にあなたのgetTasksを示し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(); } 

チェック)メタを完了した後、あなたのListViewのアダプタを更新od –

+0

ok私は編集しました – nodeMan

答えて

1
@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); 
}