Как добавить и сохранить текстовое представление программно?

Я пытаюсь научиться программно добавлять TextView и нашел много ответов на эту тему. У меня работает следующий код:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LinearLayout llCommand1 = (LinearLayout) findViewById(R.id.LL_Main);
    llCommand1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mtAdd_Register();
        }
    });
}

public void mtAdd_Register(){
    View llColumn1 =  findViewById(R.id.Column1);
    TextView tvData1 = (TextView) getLayoutInflater().inflate(R.layout.tv_red, null);
    sData = "user input" //I'll write a method to get user input
    tvData1.setText(sData);
    tvData1.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.MATCH_PARENT,30));
    ((LinearLayout) llColumn1).addView(tvData1);
}

«LL_Main» — это горизонтальный LinearLayout с 6 дочерними вертикальными LinearLayouts (от Column1 до Column6), а «tv_red» используется для установки гравитации на «центр» и цвета фона на «красный» (с рамкой, из доступного для рисования ресурса).

Этот код работает определенным образом, потому что, когда я нажимаю LL_Main во время выполнения, я получаю добавленные TextViews, как и ожидалось. Для этого теста TextView создается только в Column1, но позже у меня будет массив с идентификаторами и цикл для создания TextView для каждого столбца.

Но я хочу, чтобы эти добавленные текстовые представления были на месте, когда я снова запускаю приложение, я имею в виду, что сначала в моем приложении нет данных для отображения, и моя цель - добавить и сохранить заметку, когда пользователь касается экрана , поэтому пользователь будет видеть предыдущие добавленные TextView каждый раз, когда запускает приложение.

Я иду правильным путем? Или мне следует сохранить пользовательский ввод в файл JSON и получать его каждый раз, когда я запускаю приложение? Но даже если мне нужно сохранить пользовательский ввод в файле JSON, как сохранить TextViews для отображения сохраненных данных?

Я просто подумал: когда я впервые запускаю приложение, я могу получить входные данные и добавить, скажем, 5 TextView. Я сохраняю файл JSON, и когда я снова запускаю приложение, я должен проверить, сколько данных содержится в файле. Поэтому мой код должен добавить столько TextView, сколько требуется для отображения полученных данных.

Да?.......

РЕДАКТИРОВАТЬ:

Просто для большей ясности: скажем, в моем макете ничего нет, а в файле activity_main.xml ничего нет, кроме пустого экрана. Когда пользователь касается экрана, TextView добавляется с текстом «пользовательский ввод». И это будет происходить столько раз, сколько он коснется экрана.

НО, когда он закрывает приложение и запускает его снова.......... все TextView исчезают. Каждый раз, когда пользователь запускает приложение, он видит пустой экран. Мне нужно, чтобы предыдущие TextViews были там ............


person RGeral    schedule 23.03.2016    source источник


Ответы (1)


если вам нужно хранить легковесные сообщения, попробуйте SharePreferences.

person 蒋文喆    schedule 23.03.2016
comment
Я все еще не уверен, что мне нужно что-то сохранять вне приложения (SharePreferences, JSON или SQlite). Кажется, я должен, я просто еще не уверен. Но если мне нужно что-то сохранить, я думаю, что JSON будет моим выбором, потому что у меня будет возможность реализовать рабочий лист Excel на рабочем столе, чтобы получать пользовательские данные и сохранять оттуда данные в формате JSON. Это не первоначальная идея, чтобы получить данные из рабочего листа, но если мне придется полагаться на какое-то внешнее хранилище, то это возможно. - person RGeral; 23.03.2016
comment
JSON в порядке. Сначала создайте или найдите файл json. Затем запишите каждый шаг, например 1. [] 2. добавьте текст в строку 1-> [{текст: добавленный текст, строка: 1}], 3. добавьте текст в строку 5. -›[{текст:добавлен текст,строка:1},{текст:добавлен другой текст,строка:5}]. Помните, что файловый ввод-вывод блокируется, поэтому лучше записывать их как строку и сохранять в файл вместе каждый раз, когда пользователь использует это. затем перезапустите действие, прочитайте файл, добавьте TextView в нужную строку. - person 蒋文喆; 23.03.2016