Как вызвать список с помощью общих настроек - PullRequest
0 голосов
/ 03 апреля 2012

Мне удалось перезагрузить элемент списка в списке, когда вызов операции это метод onStop (). Здесь я хочу сохранить то, что генерируется нажатием кнопки. Если вы прочитали мои предыдущие несколько постов, вы будете знать, что происходит, но это другой вопрос.

Используя мой код:

listLimit = listItems.size() - 1;

                for( int i = 0; i < listLimit; i++ )
                {
                    storeList[i] = listItems.get( i ).toString();
                    tempDataStore = storeList[i];
                    editor.putString( DATA,tempDataStore );

                }
                editor.commit();

Я храню значения из storeList. Я знаю, что способ, описанный выше, будет в основном перезаписывать tempDataStore каждый раз, когда он повторяется. Это означает, что когда он вызывается в методе onCreate (), будет загружено только последнее значение в списке. Так как мне это исправить? Как я могу однозначно идентифицировать каждый элемент списка, не создавая новую переменную String для каждого?


UPDATE

Я вроде как отсортировал его, изменив ключ и сохранив значение. Когда я добавляю их так:

listItems.add( 0, settings.getString(  DATA+"0",tempDataStore ) );

Это работает. Но когда я пытаюсь сделать то же самое в цикле for, вот так:

for( int i = 0; i < listLimit; i++ )
            {
                listItems.add( i, settings.getString(  DATA+""+i,tempDataStore ) );
            }

Замечание происходит. Почему так?

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Этот код поместит все строки из listItems в настройки

    edit.putInt("count", listItems.size());
    for (int i = 0; i< listItems.size(); i++){
        edit.putString(String.valueOf(i), listItems.get(i));
    }
    edit.apply();

Вы можете прочитать их вот так

    int count = sPrefs.getInt("count", 0);
    List<String> list = new ArrayList<String>(count);
    for (int i = 0; i < count; i++){
        list.add(sPrefs.getString(String.valueOf(i), ""));
    }
0 голосов
/ 05 апреля 2012

Я определил причину - это было потому, что listLimit был фактически равен нулю, поэтому цикл никогда не запустился бы.Поэтому, чтобы исправить это, я сохранил значение списка следующим образом:

listLimit = listItems.size() - 1;
// Place size of list into storage
editor.putInt( "LIST_SIZE",listLimit );

И затем вспомнил его в начале цикла for здесь:

    // Toast.makeText( getApplicationContext(), "list size: "+settings.getInt( "LIST_SIZE",listLimit ),Toast.LENGTH_LONG).show();
    for( int i = 0; i < settings.getInt( "LIST_SIZE",listLimit ); i++ )
    {
        listItems.add( i, settings.getString(  DATA+""+i,tempDataStore ) );
        adapter.notifyDataSetChanged();
    }

Надеюсь, это поможет кому угодно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...