Longclick listview从firebase删除数据 - android

时间:2018-06-19 00:43:18

标签: java android firebase firebase-realtime-database

我从fireabase检索数据到listview但只检索了name,所以我想用longclickitem删除许多数据中的一个。

这是listview的样子:

  • Manggo
  • 榴莲
  • 菠萝

当我长时间点击芒果时,我可以得到name id

这就是我将所有数据检索到listview的方式。

ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot ds: dataSnapshot.getChildren()){

                    model = ds.getValue(Model.class);
                    list.add(model.getNama().toString());


            }
                listView.setAdapter(adapter);
            sortData(ascending);
            ascending = !ascending;
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

这是我的longclick方法:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

            listItem = listView.getItemAtPosition(position).toString();

            Toast.makeText(RetrieveActivity.this, listItem, Toast.LENGTH_LONG).show();
            delFruit(listItem);

            return false;
        }

        private void delFruit(String id) {
            DatabaseReference dr = FirebaseDatabase.getInstance().getReference().child("Fruit").child("").child(listItem);
            dr.removeValue();

        }
    });

那么当我在id数据中浏览时,如何获得name

1 个答案:

答案 0 :(得分:0)

您需要找到一种方法来保持适配器中每个快照的ds.getKey(),以便您可以在需要时查找它。

可以在FirebaseUI中找到一个很好的例子,它有一个FirebaseArray class,可以将数据的实际快照保存在列表中:

private final List<DataSnapshot> mSnapshots = new ArrayList<>();

现在,只要使用FirebaseUI适配器的应用程序出现与您类似的情况,就可以使用以下内容查找该项目的DatabaseReference或密钥:

public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

    listItem = adapter.getRef(position).removeValue();

    return false;
}