【问题标题】:Firebase android studio remove item from FirebaseListAdapterFirebase android studio 从 FirebaseListAdapter 中删除项目
【发布时间】:2024-12-08 09:00:02
【问题描述】:

首先我要为我糟糕的英语道歉。

我刚开始使用 android studio 进行我的冒险并学习了一些教程,但我对其中一个有疑问。我在很多地方都在寻找这个答案,但没有一个能满足我的需求。

我在 android studio 中创建了一个使用 FIREBASE 作为后端数据库的聊天应用程序,但我想为其添加一些额外的功能。即删除项目。

我将在这里发布我的代码,谁能告诉我如何才能删除我从 FirebaseListAdapter 中按下的项目。

主活动:

public class MainActivity extends ListActivity {
private Firebase mFirebaseRef;
FirebaseListAdapter<ChatMessage> mListAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Firebase.getDefaultConfig().setPersistenceEnabled(true);
    Firebase.setAndroidContext(this);

    mFirebaseRef = new Firebase("https://shining-heat-1471.firebaseio.com");


    final EditText textEdit = (EditText) this.findViewById(R.id.text_edit);
    Button sendButton = (Button) this.findViewById(R.id.send_button);

    sendButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String text = textEdit.getText().toString();
            ChatMessage message = new ChatMessage("Android User", text);
            mFirebaseRef.push().setValue(message);
            textEdit.setText("");
        }
    });


    mListAdapter = new FirebaseListAdapter<ChatMessage>(this, ChatMessage.class,
            android.R.layout.two_line_list_item, mFirebaseRef) {
        @Override
        protected void populateView(View v, ChatMessage model) {
            ((TextView)v.findViewById(android.R.id.text1)).setText(model.getName());
            ((TextView)v.findViewById(android.R.id.text2)).setText(model.getText());
        }
    };
    setListAdapter(mListAdapter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mListAdapter.cleanup();
}

聊天消息:

public class ChatMessage {
private String name;
private String text;

public ChatMessage() {
    // necessary for Firebase's deserializer
}
public ChatMessage(String name, String text) {
    this.name = name;
    this.text = text;
}

public String getName() { return name; }

public String getText() { return text; }
}

【问题讨论】:

    标签: android firebase


    【解决方案1】:

    我会让你弄清楚用户点击了什么项目(但this 可能是一个好的开始)。

    一旦您知道用户点击的项目的位置,您就可以轻松地将其从 Firebase 中删除:

    Firebase itemRef = adapter.getRef(position);
    itemRef.removeValue();
    

    这将从数据库中删除该项目从列表适配器中删除。

    【讨论】:

    • "itemRef.remove();"当我尝试这个时它不起作用,但是当我使用这个方法时:“itemRef.removeValue();”它工作正常。
    • 感谢您的关注。它在 JavaScript API 中称为 remove(),但显然不是在 Android API 中。我已经更新了答案中的代码。