Заполнение массива из AsyncTask - PullRequest
1 голос
/ 07 марта 2012

У меня есть следующая ListPreference в PreferenceActivity, которую я хочу заполнить телефонными номерами, которые я получаю из веб-службы.Как мне добиться успеха в этом?

    <PreferenceCategory
        android:title="@string/category_shownumber">

            <ListPreference
                    android:title="@string/shownumber_header"
                    android:summary="@string/shownumber_summary"
                    android:key="shownumber_list"
                    android:defaultValue="@string/shownumber_default"
                    android:entries="@array/listArray"
                    android:entryValues="@array/listValues" />

</PreferenceCategory>

Я хочу, чтобы мой android: записи были из массива строк, возвращаемого doInBackground в этом классе:

    private class PullNumbersTask extends AsyncTask<Void, Void, String[]>
{
    private Context ctx; 

    public PullNumbersTask(Context context)
    {
        super();
        this.ctx=context;
    }
    private ProgressDialog Dialog = new ProgressDialog(getParent());

    protected void onPreExecute() 
    {
        Dialog.setMessage("Fetching numbers..");
        Dialog.show();
    }

    @Override
    protected String[] doInBackground(Void... arg0) {
        return (userControl.GetNumbers());
    }


     protected void onPostExecute(String[] result) 
     {
              // Do stuff with my array
     }

Любые предложения

1 Ответ

2 голосов
/ 07 марта 2012

Как насчет простого вызова этого в вашем onPostExecute

listPref.setEntries(result);

(очевидно, вам понадобится ссылка на объект ListPreference)

edit

Чтобы получитьудерживая объект ListPreference, вы сделаете

ListPreference listPref = (ListPreference) findPreference("shownumber_list");

вызов addPreferencesFromResource(R.xml.preferences); должен быть выполнен до этого (скорее всего, в onCreate ())

...