У меня есть класс, который расширяет ListActivity и устанавливает адаптер и класс адаптера, который заполняет представление данными из БД. Я хотел добавить программный диалог прогресса в класс активности List, поскольку представления были заполнены и завершают трудоемкие задачи в асинхронном внутреннем классе.Где поставить класс AysncTask в ListActivity
Мне интересно, где лучшее место для реализации задачи asynch, я планирую также включить прогресс диалога в pre Execute и post Execute.
код класса список форм деятельности OnCreate:
data = new diveDataBase(this);
data.open();
cursor = data.getCursorData();
//check if data available
if(cursor!=null && cursor.getCount()>0){
// get customised array adoater list
adapter = new ItemAdapter(this, cursor);
this.setListAdapter(adapter);
data.close();
}
А класс адаптера метод вид связывания с объектом курсора, переданного в качестве параметра:
String diveSite = c.getString(c.getColumnIndexOrThrow(diveDataBase.KEY_DIVESITE));
String date = c.getString(c.getColumnIndexOrThrow(diveDataBase.KEY__DIVEDATE));
String diveNumber= c.getString(c.getColumnIndexOrThrow(diveDataBase.KEY__DIVENUMBER));
String diveImagePath = c.getString(c.getColumnIndex(diveDataBase.KEY_DIVEPICTURE));
String rating = c.getString(c.getColumnIndexOrThrow(diveDataBase.KEY_DIVERATING));
/**
* Next set the dive site name
*/
TextView title_text = (TextView) v.findViewById(R.id.tv_DiveSiteListView);
if (title_text != null) {
title_text.setText(diveSite);
}
//populate another textview and image view etc
Edit: Мой код для aycnh класса
Итак, я закончил u обертывание кода для получения курсора DB в режиме «Сделай-в-фоне» и создания адаптера и установки его в post-execute, это лучший способ как е DB на данный момент не достаточно большой, чтобы тест:
@Override
protected Cursor doInBackground(Void... params) {
> ViewListOfDives.data = new diveDataBase(ViewListOfDives.this);
> ViewListOfDives.data.open();
> // get cursor object holding all data, use a asynch inner class to load
> cursor = data.getCursorData();
>
>
> return cursor;
}
> @Override
protected void onPostExecute(Cursor cursor) {
if(pd.isShowing()){
> pd.dismiss(); }
> //check if data available
> if(cursor!=null && cursor.getCount()>0){
> // get customised array adoater list
> adapter = new ItemAdapter(ViewListOfDives.this, cursor);
> }else{
>
> //display o dives in data base message and finish this activity
> displayDialog();
>
> }
> ViewListOfDives.this.setListAdapter(adapter);
> ViewListOfDives.data.close(); super.onPostExecute(cursor); }
>
>
>
>