Асинхронный класс Android с помощью setListAdapter - PullRequest
1 голос
/ 11 ноября 2011

У меня есть класс деятельности с внутренним защищенным классом, который расширяет AsyncTask. Я пытаюсь, чтобы AsyncTask загружал данные в фоновом режиме, когда я нажимал кнопку, а затем отображал список на основе этих данных.

вот мой код для setListAdapter:

setListAdapter(new ArrayAdapter<String>(this, R.layout.list_row, 
                R.id.rowtextview, testArr.toArray(test2)));

проблема в том, что я не могу просто вставить setListAdapter в класс AsyncTask, потому что ему нужен контекст для внешнего класса, и единственное место, куда он может пойти, находится внутри onCreate () во внешнем классе Activity. Если он внутри onCreate, он может быть использован только один раз и не является динамическим. Я не уверен, как бы я заставлял список обновляться каждый раз, когда я нажимаю кнопку и ищу что-то новое.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Ваш собственный внутренний AsyncTask не помечен как статический, верно?Это означает, что он на самом деле содержит ссылку на родительский класс, которым вы являетесь Activity.Таким образом, вы можете использовать:

setListAdapter(new ArrayAdapter<String>(YourActivity.this, R.layout.list_row, 
                R.id.rowtextview, testArr.toArray(test2)));
1 голос
/ 11 ноября 2011

Легко, сделайте адаптер переменной экземпляра и расширьте его (тривиально), чтобы добавить свой собственный метод updateData(newData).В этом методе вы обновляете свои данные И звоните notifyDatasetChanged().И вы сделали!Таким образом, вам нужно только установить адаптер один раз и просто позвонить updateData(), когда AsyncTask вернется.

...