[英]How to delete item from firebase list adapter and firebase using button
我有一個從 firebase 數據庫讀取數據並在 firebase 列表適配器中顯示數據的活動。 列表視圖中的每個項目都有 2 個編輯文本和一個用於從列表視圖和 firebase 數據庫中刪除項目的按鈕。 下面是顯示 firebase 列表適配器的代碼
adapter =new FirebaseListAdapter <TravelDetails>
( options){
protected void populateView(View v, TravelDetails model, int position) {
Button delete=(Button)v.findViewById(R.id.button_accept);
final TextView z=(TextView)v.findViewById(R.id.dropoff);
final TextView text=(TextView)v.findViewById(R.id.txref);
text.setText(model.getTxt_Ref());
z.setText(model.getDropoffspot());
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {.....
列表視圖工作正常。 數據從 firebase 加載,但我希望能夠使用此按鈕刪除從列表視圖和 firebase 數據庫中刪除項目。 我做了研究,只找到了點擊項目而不是使用按鈕的方法,一個例子是這個Android 工作室從列表視圖和 firebase 中刪除項目,但我不知道如何將原理應用於與數據庫中的項目關聯的按鈕. 請提供幫助
下面是我的適配器的代碼 class public class TravelDetails {
private String dropoffspot;
private String txt_Ref;
public TravelDetails(){
}
public String getDropoffspot(){
return dropoffspot;
}
public void setDropoffspot(String dropoffspot){
this.dropoffspot=dropoffspot;
}
public String getTxt_Ref() {
return txt_Ref;
}
public void setTxt_Ref(String txt_Ref) {
this.txt_Ref = txt_Ref;
}
}
您可以在適配器內執行此操作
// make this function inside your adapter
protected void populateView(View v, ArrayList<TravelDetails> models, final int position) {
Button delete=(Button)v.findViewById(R.id.button_accept);
final TextView z=(TextView)v.findViewById(R.id.dropoff);
final TextView text=(TextView)v.findViewById(R.id.txref);
text.setText(model.getTxt_Ref());
z.setText(model.getDropoffspot());
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// code to delete from firebase
models.remove(position); // delete from adapter array list
notifyDataSetChanged(); // refresh adapter
}
}
}
我發現了如何解決我的問題。 我只是將其添加到單擊方法的刪除按鈕中。
public void onClick(View v) {
DatabaseReference item=adapter.getRef(position) ;
item.removeValue();
} });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.