Java Longclick listview从firebase-android删除数据

Java Longclick listview从firebase-android删除数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我从fireabase到listview检索数据,但只检索到name,因此我想使用longclickitem删除许多数据中的一个 这是listview,看起来像: 芒果 榴莲 菠萝 当我长按manggo时,我可以得到名称和id 这就是我如何将所有数据检索到listview的方法 ref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(Data

我从fireabase到listview检索数据,但只检索到
name
,因此我想使用longclickitem删除许多数据中的一个

这是listview,看起来像:

  • 芒果
  • 榴莲
  • 菠萝
当我长按manggo时,我可以得到
名称
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();

        }
    });
listView.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id){
listItem=listView.getItemAtPosition(position).toString();
Toast.makeText(RetrieveActivity.this、listItem、Toast.LENGTH_LONG.show();
delFruit(列表项);
返回false;
}
私有void delFruit(字符串id){
DatabaseReference dr=FirebaseDatabase.getInstance().getReference().child(“水果”).child(“”).child(listItem);
removeValue博士();
}
});

因此,当我在数据的
名称
中单击Item时,如何获取
id

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

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

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

你的id是什么?长按一下你当前的id位置。它在firebase上的键,对不起,我无法获取
getRef
。只有当你使用FirebaseUI的适配器,或者你自己创建了适配器时,该方法才存在。
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

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

    return false;
}