首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Longclick listview从firebase中删除数据- android

Longclick listview从firebase中删除数据- android
EN

Stack Overflow用户
提问于 2018-06-19 08:43:18
回答 1查看 192关注 0票数 -1

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

这是列表视图,如下所示:

  • Manggo
  • Durian
  • Pineapple

当我长点击manggo时,我可以得到nameid

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

代码语言:javascript
复制
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方法:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2018-06-19 08:53:03

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

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

代码语言:javascript
复制
private final List<DataSnapshot> mSnapshots = new ArrayList<>();

现在,每当使用FirebaseUI适配器的应用程序遇到类似您的情况时,它都可以使用以下命令查找该项的DatabaseReference或密钥:

代码语言:javascript
复制
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

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

    return false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50919173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档