【问题标题】:Android Get specific id from listview using Firebase DatabaseAndroid 使用 Firebase 数据库从 listview 获取特定 id
【发布时间】:2017-04-22 10:59:22
【问题描述】:

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

之后我有一个 setOnItemLongClickListener 从列表视图中删除选定的项目。所以当我长按一个项目时,我有这个 AlertDialog 菜单。

所以,接下来我必须按“是”按钮并从 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 数据库

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

例如,如果我长按第一项我想获取 id -KiFDsP6qOUAo6hw_ES0。任何人都可以帮助我如何做到这一点?

【问题讨论】:

  • 你应该有模型类来存储不同ID的数据,然后使用该模型类来获取数据。你能显示你向适配器发送数据的代码吗?

标签: android listview firebase firebase-realtime-database


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多