Как удалить определенный узел в Firebase Android из ListView - PullRequest
1 голос
/ 30 сентября 2019

Я получил prpblem. Я хочу удалить выбранный ListView и определенные узлы, которые ссылаются на номера ключей (20191, 20192, ... как выделено) и их дочерние элементы. вот моя структура базы данных

вот мой OnItemClickListener с упором на случай 2 для удаления ListView

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(final AdapterView<?> parent, View view, final int position, long id) {
                final Aduanclass aduanclass = aduanclassList.get(position);
//                selectedPosition = position;
//                itemSelected = true;
//                final Dialog dialog = new Dialog(MainActivity.this);
//                    dialog.setContentView(R.layout.activity_common_detail_aduan);
//                                dialog.setTitle("Pilih Aksi");
//                dialog.show();
//                final String Selection=arrayList.get(position);

                final CharSequence [] dialog ={"Lihat Detail", "Ubah", "Hapus"};
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("Pilihan");

                builder.setItems(dialog, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {


                        switch (which){
                            case 0:
                                Intent intentCommondetail= new Intent(MainActivity.this,CommonDetailAduan.class);
                                intentCommondetail.putExtra("primekeyy", aduanclass.getPrimekey());
                                intentCommondetail.putExtra("kategory", aduanclass.getKategori());
                                intentCommondetail.putExtra("deskripsy",aduanclass.getDeskripsi());
//                                intentCommondetail.putExtra("kategori",Selection);
//                                intentCommondetail.putExtra("deskripsi",Selection);
                                startActivity(intentCommondetail);
                                break;
                            case 1:
                                Intent intentCommonedit= new Intent(MainActivity.this,CommonUpdateAduan.class);
//                                intentCommonedit.putExtra("primekeyy", aduanclass.getPrimekey());
                                intentCommonedit.putExtra("primekeyy", aduanclass.getPrimekey());
                                intentCommonedit.putExtra("kategory", aduanclass.getKategori());
                                intentCommonedit.putExtra("deskripsy",aduanclass.getDeskripsi());
//                                intentCommondetail.putExtra("kategori",Selection);
//                                intentCommondetail.putExtra("deskripsi",Selection);
                                startActivity(intentCommonedit);
                                break;
                            case 2:
                                deleteData(primkey);
                        }
                    }
                });
                builder.create().show();
            }
        });
        ((ArrayAdapter)listView.getAdapter()).notifyDataSetChanged();

и вот мой метод deleteData

private void deleteData(final String primkey) {
        DatabaseReference mDatabase1 =FirebaseDatabase.getInstance().getReference("aduan").getRef();
        mDatabase1.removeValue();

Я попытался запустить код, но вместо удаления определенного listView и определенного узла в базе данных Firebase он удалил все дочерние элементы "aduan"

FYI, я установил, что номера клавиш будут автоматически увеличиваться на +1 при каждом добавлении при вводе данных, но я не знаю, как ссылаться на номера клавиш.

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019
private void deleteData(final String primkey) {
    DatabaseReference mDatabase1 =FirebaseDatabase.getInstance().getReference("aduan").getRef();
    mDatabase1.removeValue();

Вышеприведенное получает ссылку на вашу базу данных с родительским узлом, возвращаемым для aduan. Вы должны перемещаться внутри узла aduan, используя

private void deleteData(final String primkey) {
    DatabaseReference mDatabase1 =FirebaseDatabase.getInstance().getReference("aduan").child("replace with child node key here");
    mDatabase1.removeValue();

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

0 голосов
/ 30 сентября 2019

Вы никогда не использовали primkey в ссылке на базу данных. Код должен быть таким

private void deleteData(final String primkey) {
        DatabaseReference mDatabase1 =FirebaseDatabase.getInstance().getReference("aduan").child(primkey);
        mDatabase1.removeValue();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...