Обновите значение в базе данных SQLite и покажите его как асинхронную задачу - PullRequest
0 голосов
/ 04 апреля 2020

Я разрабатываю мобильное приложение, и в этом я использую SQLite для хранения слова, взятого у пользователя. И я даю пользователю возможность обновить слово. И я хочу обновить слово в списке, как только кнопка нажата. Я думаю, что я должен использовать asyn c задачу, чтобы выполнить эту опцию, но я не знаком с ней, поэтому, пожалуйста, помогите.

*

public void showData(){
        final Cursor cursor = translateDB.retrieveData();
        System.out.println("1");
        if (cursor.getCount() == 0){
            Toast.makeText(EditPhrase.this, "No data", Toast.LENGTH_LONG).show();
            return;
        }

        ArrayList<String> list = new ArrayList<>();
        System.out.println("2");
        while (cursor.moveToNext()) {
            list.add(cursor.getString(1));
        }

        /*ListAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,list);
        listview.setAdapter(adapter);*/

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_single_choice,list);
        arrayAdapter.sort(new Comparator<String>() {
            @Override
            public int compare(String lhs, String rhs) {
                return lhs.compareTo(rhs);
            }
        });

        listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        listview.setAdapter(arrayAdapter);

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                clicked = adapterView.getItemAtPosition(i).toString();
                Toast.makeText(EditPhrase.this,"You selected '"+ clicked+"' " , Toast.LENGTH_LONG).show();
                editText.setText("");
            }
        });
    }

    public void editWord(){
        edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                editText.setText(clicked);
            }
        });
    }

    public void saveWord(){

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Cursor selectW = translateDB.getItemID(clicked);
                int itemID=-1;
                while (selectW.moveToNext()){
                    itemID = selectW.getInt(0);
                    System.out.println(itemID);
                }

                String item = editText.getText().toString();
                System.out.println("aaa --- "+item);
                if (!item.equals("")){
                    translateDB.updateData(item, itemID,clicked);
                    Toast.makeText(EditPhrase.this,"Saved successfully ...",Toast.LENGTH_LONG).show();
                }
                else {
                    Toast.makeText(EditPhrase.this,"Save FAILED !!!",Toast.LENGTH_LONG).show();
                }
            }
        });

    }

Как показано на рисунке, я хочу обновить представление списка новой обновленной фразой, как только будет нажата кнопка сохранения. Когда я покидаю приложение и запускаю его снова, оно отображается правильно, но я хочу, чтобы оно отображалось при нажатии кнопки.

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