【问题标题】:How to delete the selected item from both ListView and Firebase database如何从 ListView 和 Firebase 数据库中删除所选项目
【发布时间】:2017-05-31 20:29:16
【问题描述】:

我使用此方法从我的应用程序中的ListView 中删除选定的项目。 但是当我再次回到我的时候,被删除的项目又重新出现了。

我也想从 Firebase 数据库中删除所选项目。我怎么做 ?任何人都可以建议我。

private void removeItemFromPosition(int position) {

  final int deletePosition = position;
  AlertDialog.Builder alert = new AlertDialog.Builder(
    MainActivity.this);
  alert.setTitle("Delete");
  alert.setMessage("Do you want delete this post?");

  alert.setPositiveButton("YES", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      messages.remove(deletePosition);
      Log.d(TAG, "Messages: " + messages);
      mMessageAdapter.notifyDataSetChanged();
      mMessageAdapter.notifyDataSetInvalidated();
    }
  });

  alert.setNegativeButton("CANCEL", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      dialog.dismiss();
    }
  });
  alert.show();
}

在我的 onCreate() 方法中,我有这个:

mMessageListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  @Override
  public boolean onItemLongClick(AdapterView << ? > parent, View view, int position, long id) {
    removeItemFromPosition(position);
    return true;
  }
});

【问题讨论】:

    标签: android listview firebase firebase-realtime-database


    【解决方案1】:

    当您在 onDataChange() 中从 Firebase 获取数据时,您需要将密钥保存在一个数组中,其索引与您的 ListView 中的索引相对应。因此,当单击列表中的项目时,您将获得其位置,然后在该位置的数组中获得密钥,然后将其从 firebase 中删除 例如:

    String key = fetchedDropsList.get(position); mRef.child(key).removeValue();

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多