Как динамически добавлять данные в счетчик? Сохраняйте данные счетчика при каждом создании действия. Android

#java #android #android-activity #dynamic #android-spinner

#java #Android #android-активность #динамический #android-счетчик

Вопрос:

[обновить] Я исправляю допущенную мной ошибку. теперь счетчик может обновляться динамически. Но каждый раз, когда я запускаю это новое действие, счетчик будет пустым, как я могу сохранить старые данные при повторном создании действия?

У меня есть EditView, кнопка и счетчик. Когда пользователь вводит элемент в EditView, которого нет в счетчике, он может нажать кнопку, чтобы добавить в счетчик в следующий раз, чтобы сэкономить время. Я ищу некоторые решения в StackOverflow и Google, но после того, как я нажимаю кнопку, это все еще не работает, данные все еще не добавляются в счетчик. Вот часть кода:

     purchasedProduct=(EditText)findViewById(R.id.purchasedP);
    spinner=(Spinner)findViewById(R.id.spinner);
    spinnerBtn=(Button)findViewById(R.id.purchasedDBtn);
    items =new ArrayList<String>();
    items.add("");

    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(adapter);
    spinnerBtn.setOnClickListener(spinnerBtnListener);
    spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            purchasedProduct.setText(adapterView.getSelectedItem().toString());
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
}

private Button.OnClickListener spinnerBtnListener = new Button.OnClickListener(){

    @Override
    public void onClick(View view) {
        String listItem = purchasedProduct.getText().toString();

        //check if already there
        for(int i = 0;i < adapter.getCount();i  )
        {
            if(listItem.equals(adapter.getItem(i)))
                return;
        }
        //check if type in is empty
        if(!listItem.equals(""))
        {
            adapter.clear();
            items.add(listItem);
            adapter.addAll(items);
            adapter.notifyDataSetChanged();


        }
    }
};
  

Кто-нибудь может сказать мне, как это исправить? Спасибо!

Ответ №1:

Вам необходимо сохранить новые данные в базе данных SQLite. При запуске действия вы просто получаете данные из базы данных. Все данные в базе данных сохраняются на устройстве. Смотрите, как использовать SQLite в Android Studio.

Также вы можете попробовать сохранить данные в XML JSON или текстовом файле, но это плохая идея.

Ответ №2:

Вы можете использовать Room Persistence Library , посмотрите здесь для получения подробной информации.

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