Autore Topic: Utilizzare le SharedPreferences per cambiare file da visualizzare  (Letto 348 volte)

Offline Carontes

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos u8150
0
Salve, sto cercando di far funzionare questa impostazione ma non ci riesco. La mia applicazione non ha un database SQL ma prende ciò che gli serve da un file .xml. Vorrei poter cambiare il file da vedere tramite le impostazioni delle preferenze, per esempio vorrei essere in grado di vedere o il file data.xml o il file data2.xml selezionando o deselezionando un checkbox.

Activity PreferencesFromXml:
Codice (Java): [Seleziona]
public class PreferencesFromXml extends PreferenceActivity
{

        public static final String COLORE_DEFAULT = "#000000";

        public static final String COLORE_PREF = "colore";

        public static final String TITOLO_PREF = "titolo";

        public static final String USA_TITOLO_CUSTOM_PREF = "usa_titolo_custom";

        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);

                addPreferencesFromResource(R.xml.preferences);

                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

                Preference titoloPrefs = findPreference(TITOLO_PREF);
                titoloPrefs.setSummary(prefs.getString(TITOLO_PREF, getString(R.string.titolo_custom)));
                titoloPrefs.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
                {
                        public boolean onPreferenceChange(Preference prefs, Object value)
                        {
                                prefs.setSummary((CharSequence) value);
                                return true;
                        }
                });
        }
}

Activity Main:
Codice (Java): [Seleziona]
public class Main extends ExpandableListActivity
{
        ExpandableListAdapter mAdapter;
        private ArrayList<Group> groups;

        @Override
        public void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.list_main);

                groups = readGroupsFromXml();

                mAdapter = new MyExpandableListAdapter(getLayoutInflater(), groups);
                setListAdapter(mAdapter);
                registerForContextMenu(getExpandableListView());
        }

        public ArrayList<Group> readGroupsFromXml()
        {
                try
                {
                        final XmlHandler handler = new XmlHandler();
                        final SAXParser sp = SAXParserFactory.newInstance().newSAXParser();
                        sp.parse(getApplicationContext().getResources().openRawResource(R.raw.data), handler);
                        return handler.getGroups();
                }
                catch (Exception e)
                {
                        Log.e("Error", "xml", e);
                }
                return null;
        }

Poi non so cosa mettere per scegliere il file da usare quando il checkbox è selezionato oppure no. Mi sono fermato qui (anche se non so se è corretto):
Codice (Java): [Seleziona]
@Override
    protected void onResume(){
        super.onResume();
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        Editor editor = prefs.edit();
       
        String usa_titolo_custom;
                if (prefs.getBoolean(PreferencesFromXml.USA_TITOLO_CUSTOM_PREF, false))
                {

Come potete vedere dal codice i file xml si trovano nella cartella res/raw. Grazie per l'aiuto.