2015-12-01 101 views
0

首先,我想爲我可憐的英語道歉。Firebase android studio從FirebaseListAdapter中移除項目

我剛開始使用android studio進行冒險,並按照一些教程進行操作,並對其中一個問題提出了疑問。我在很多地方尋找這個答案,但我沒有發現能夠滿足我的需求的地方。

我在android studio中創建了一個以FIREBASE作爲後端數據庫的聊天應用程序,但是我想添加一些額外的功能。即刪除項目。

我會在這裏發佈我的代碼,有人能告訴我如何才能從FirebaseListAdapter中刪除我按下的項目。

MainActivity:

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(); 
} 

ChatMessage:

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; } 
} 

回答

6

我要把它留給你要弄清楚用戶點擊什麼項目(但this可能是一個良好的開端)。

一旦你知道用戶點擊了該項目的位置,你可以從火力地堡很容易地將其刪除:

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

這將從數據庫從列表適配器刪除該項目。

+0

「itemRef.remove();」當我嘗試這種方式不起作用,但是當我使用這種方法時:「itemRef.removeValue();」它工作正常。 – Apo

+0

感謝您的支持。它在JavaScript API中被稱爲remove(),但顯然不在Android中。我在我的答案中更新了代碼。 –