Android使用Firebase数据库从listview获取特定ID

时间:2017-04-22 10:59:23

标签: android listview firebase firebase-realtime-database

我正在使用firebase开发一个笔记应用程序。正如您在第一个屏幕截图中看到的那样,我使用自定义列表视图来显示来自firebase数据库的所有数据。

enter image description here

之后我有一个setOnItemLongClickListener来从listview中删除一个选定的项目。因此,当我长按一个项目时,我有这个AlertDialog菜单。

enter image description here

所以,接下来我要按“是”'按钮并从listView中删除所选项目。

这是我的setOnItemLongClickListener代码

mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(final AdapterView<?> parent, View view, final int position, long id) {

            final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
            dialogBuilder.setTitle("Delete List?");
            dialogBuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {



                }
            });

            dialogBuilder.show();
            return false;
        }
    });

这是ListAdapter类

public class ListAdapter extends ArrayAdapter<Post>{

public ListAdapter(Context context, int resource, List<Post> objects){
    super(context, resource, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent){
    if(convertView == null){
        convertView = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.item_row,parent,false);
    }

    TextView listName = (TextView) convertView.findViewById(R.id.item_title);
    TextView date = (TextView) convertView.findViewById(R.id.item_date);
    TextView body = (TextView) convertView.findViewById(R.id.item_body);

    Post list =  getItem(position);

    listName.setText(list.getTitle());
    date.setText(list.getDate());
    body.setText(list.getBody());

    //checkBox.setVisibility(View.GONE);


    return convertView;
}

}

    mDatabase.child(getUid()).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Post post = dataSnapshot.getValue(Post.class);
            mAdapter.add(post);
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {


        }
    });

这是我的Firebase数据库

enter image description here

问题是我无法获取特定的长按项目的ID来删除它。

例如,如果我在第一项中长按,我想获得身份证 -KiFDsP6qOUAo6hw_ES0。任何人都可以帮助我,我该怎么做?

1 个答案:

答案 0 :(得分:3)

  1. 首先修改您的类并添加一个属性类型为Parent的属性,并将数据添加到父数据库的setValue为父值 2.当你从firebase中检索数据时,你必须将它们存储在ArrayList类数据结构中,让变量为arraylist类型的myList 然后在listView上试试这个 mListview.setOnItemSelected侦听器 您将获得项目的位置,然后使用该位置从对象中获取arraylist中的对象
    1. 现在获取Objects Parent Value并将其设置为null