我从fireabase到listview检索数据,但只检索name
,所以我想用longclickitem删除许多数据中的一个。
这是列表视图,如下所示:
当我长点击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();
}
});
那么,当我长点击name
of data中的项目时,如何获得id
。
发布于 2018-06-19 08:53:03
您需要找到一种方法来保留适配器中每个快照的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;
}
https://stackoverflow.com/questions/50919173
复制相似问题