Я использую ArrayAdapter для отображения элементов в ListView. Каждая строка в этом ListView имеет кнопку.
Всякий раз, когда пользователь нажимает на одну из этих кнопок, я запускаю AsyncTask, чтобы выполнить некоторую обработку в фоновом режиме.
Пока это работает.
Теперь я хочу показать пользовательский ProgressDialog в течение этого времени. Что меня здесь озадачивает, так это первый параметр статического метода удобства ProgressDialog.show (). В рамках деятельности я обычно использую здесь «Activityname.this». Но что я должен использовать в адаптере. Я попробовал контекст из адаптера (который потерпел крах), context.getApplicationContext и еще несколько. Ничего не сработало - либо вылетело, либо отказано компилятором.
Итак, мой вопрос сегодня: что мне указать в этом параметре?
Вот урезанная часть моего кода:
public class MyAdapter extends ArrayAdapter<MyContainer> {
private class MyAsyncTask extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute () {
if (!isRunning) {
progressDialog = MyProgressDialog.show(?????,
null,
null,
true,
false);
}
}
@Override
protected Boolean doInBackground(final String... strings) {
boolean rc = false;
if (!isRunning) {
isRunning = true;
//
rc = true;
}
return rc;
}
@Override
protected void onPostExecute(final Boolean result) {
if (progressDialog != null) {
progressDialog.cancel();
}
progressDialog = null;
//
}
}
private class MyOnClickListener implements OnClickListener {
private MyContainer container;
public MyOnClickListener(final MyContainer container) {
this.container = container;
}
public void onClick(final View view) {
if (container != null) {
new MyAsyncTask().execute(container.getUrl());
}
}
private String appName = "";
private ArrayList<MyContainer> containers;
private Context context;
private boolean isRunning;
private int layout;
private MyProgressDialog progressDialog;
private Resources resources;
public MyAdapter(final Context context, final int layout, final ArrayList<MyContainer> containers, final long link_id) {
super(context, layout, containers);
this.context = context;
this.layout = layout;
this.containers = containers;
resources = context.getResources();
appName = resources.getString(R.string.txt_appname);
}
@Override
public View getView(final int position, final View contentView, final ViewGroup viewGroup) {
//
}
}
Заранее спасибо.
РЕДАКТИРОВАТЬ : Использование контекста переменной экземпляра из адаптера работало после очистки проекта. Arg! Спасибо за ваши ответы.