Java Longclick listview从firebase-android删除数据
我从fireabase到listview检索数据,但只检索到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
name
,因此我想使用longclickitem删除许多数据中的一个
这是listview,看起来像:
- 芒果
- 榴莲
- 菠萝
名称
和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;
}