我从fireabase检索数据到listview但只检索了name
,所以我想用longclickitem删除许多数据中的一个。
这是listview的样子:
当我长时间点击芒果时,我可以得到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
。
答案 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;
}