Question

public class SettingsActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    /* Some initializations */
    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);

    ListView listView = new ListView(this);
    listView.setId(android.R.id.list);
    listView.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT, 1));
    layout.addView(listView);

    this.setContentView(layout);
    /* Preferences time! (we build the preferences) */
    Preference version = getPreference("My School Manager", "Version 2.0",
            null);
    Preference author = getPreference("Author", "Simone Casagranda", null);
    Preference marketLink = getPreference("Android market",
            "View all my apps :)",
            new Intent(Intent.ACTION_VIEW, Uri
                    .parse("http://market.android.com/details?id="
                            + "it.trento.alchemiasoft.casagranda.simone")));

    CheckBoxPreference check = new CheckBoxPreference(this);
    check.setTitle("Checkbox");
    check.setSummary("Example of checkbox");

    DialogPreference license = new MyDialogPreference(this, "License",
            "This is the license for...bla bla");

    /* Now we add the preferences to the preference screen */
    PreferenceScreen preferenceScreen = this.getPreferenceManager()
            .createPreferenceScreen(this);
    addPreferenceCategory(preferenceScreen, "Preferences Tutorial",
            version, author, marketLink, check, license);
    this.setPreferenceScreen(preferenceScreen);
}

private boolean addPreferenceCategory(PreferenceScreen preferenceScreen,
        String titleCategory, Preference... preferences) {
    boolean addPreference = false;
    for (Preference preference : preferences) {
        if (preference != null)
            addPreference = true;
    }
    if (addPreference) {
        PreferenceCategory preferenceCategory = new PreferenceCategory(this);
        preferenceCategory.setTitle(titleCategory);
        preferenceScreen.addPreference(preferenceCategory);
        for (Preference preference : preferences) {
            if (preference != null)
                preferenceCategory.addPreference(preference);
        }
        return true;
    } else
        return false;
}

private Preference getPreference(String title, String summary, Intent intent) {
    Preference pref = new Preference(this);
    pref.setTitle(title);
    pref.setSummary(summary);
    if (intent != null)
        pref.setIntent(intent);
    return pref;
}

public class MyDialogPreference extends DialogPreference {
    public MyDialogPreference(Context context, String title, String text) {
        super(context, null);
        this.setTitle(title);
        this.setDialogMessage(text);
    }
}

}

Dans ce morceau de code, la préférence sont répertoriés dans le listview. Est-ce pas besoin d'un adaptateur? Je ne vois pas les données sont introduit dans le listview. Qu'en est-il cet écran des préférences? Est-il nécessaire pour le réglage de préférence?

Était-ce utile?

La solution

The PreferenceActivity handles the preferences all by itself. The adapter is built into the PreferenceActivity so that you don't have to bother about it. Also instead of creating your preferences programmatically you can use a XML to do the same. Check this tutorial.

The preference activity takes out a lot of pain. Imagine writing code for wiring all the UI actions like showing dialog, changing the states of your preferences and to save them. Preference activity takes that pain away from you.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top