сохранить и восстановить текстовые данные и атрибуты GridView даже после закрытия приложения - PullRequest
0 голосов
/ 19 ноября 2018

Мой настоящий дизайн приложения имеет гораздо более сложную компоновку, включающую GridView с пользовательским адаптером, ListView и т. Д., И я предполагаю, что то же самое относится и к базовому TextView и, следовательно, имеет общий простой код.

Я уже прошел длинную тему на Сохранение состояния активности Android с помощью Save Instance State и узнал (некоторые из них могут быть предположениями) многое о жизненном цикле активности, фрагментах, плюсах / минусах как SavedInstanceState, SharedPreferences и т. Д.

НоЯ все еще не мог найти, как хранить ДАННЫЕ TextView и его АТРИБУТЫ для ex.BackgroundColor сохраняет как после закрытия приложения, его открытия, так и после изменения ориентации.Другой поток, о котором я упоминал выше, предлагает использовать SharedPreferences для данных, которые живут долго даже после выхода из приложения, и onSaveInstanceState, onRestoreInstanceState для временных данных, но ничего особенного о сохранении текстовых размеров атрибутов представления, backgroundcolor и т. Д., Когда приложения закрыты.

Я предполагаюТекст TextView - это Data, а BackgroundColor - это состояние, а SharedPreferences и onSaveInstanceState должны быть обязательными?Я также предполагаю, что такое же решение будет работать для CustomAdapter GridView и ListView, потому что в основном оно содержит TextView в качестве своего элемента или мне нужен другой подход для сохранения и восстановления для хранения данных, атрибутов элементов (TextView) GridView ?.

Пример кода ниже, в котором три TextView создаются динамически и добавляются в LinearLayout, а при щелчке TextView его Text, BackgroundColor будет изменен.Оба эти изменения должны быть восстановлены при закрытии приложения, а также при изменении ориентации.

public class MainActivity extends AppCompatActivity{
    private static final String TAG = "MainActivity";
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 LinearLayout mDynamicLayout = findViewById(R.id.dynnamicLayout);
        for( int i = 1; i < 4; i++ ) {
            TextView test = (TextView) getLayoutInflater().inflate(R.layout.gv_item_fixedline,mDynamicLayout,false); // Magic!
            int newId = View.generateViewId();
            test.setId(newId);
            test.setText(Integer.toString(i)); // Remove this if you set text in the xml
            test.setTextColor(Color.WHITE);
            addListeners(test);
            mDynamicLayout.addView(test, i-1); // Bang!
        }
    }

        private void addListeners(final TextView test) {
        test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick: clicked");
                int val = Integer.parseInt(test.getText().toString());
                val++;

                test.setText(Integer.toString(val));
                test.setBackgroundColor(Color.MAGENTA);
            }
        });
    }
}

1 Ответ

0 голосов
/ 21 ноября 2018

SharedPrefereferences, должны использоваться для хранения небольших объемов данных.Если вам нужно хранить большие суммы, рассмотрите возможность использования SQLite

...