如何从ListView和Firebase数据库中删除所选项目

时间:2017-05-31 20:29:16

标签: android listview firebase firebase-realtime-database

我使用此方法从我的应用中的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;
  }
});

1 个答案:

答案 0 :(得分:0)

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

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

希望这有帮助