Back to project page FirebaseGradleChat.
The source code is released under:
Apache License
If you think the Android project FirebaseGradleChat listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package pl.polak.firebase; /*from w w w . j ava 2s . co m*/ import android.app.ListActivity; import android.content.SharedPreferences; import android.database.DataSetObserver; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.os.Build; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.firebase.client.DataSnapshot; import com.firebase.client.Firebase; import com.firebase.client.FirebaseError; import com.firebase.client.ValueEventListener; import java.util.Random; import pl.polak.firebase.adapter.ChatListAdapter; import pl.polak.firebase.chat.model.Chat; public class MainActivity extends ActionBarActivity { private String username; private Firebase ref; private ValueEventListener connectedListener; private ChatListAdapter chatListAdapter; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(android.R.id.list); // Make sure we have a username setupUsername(); setTitle("Chatting as " + username); // Setup our Firebase ref ref = new Firebase(getString(R.string.firebase_url)).child("polok-chat"); // Setup our input methods. Enter key on the keyboard or pushing the send button EditText inputText = (EditText)findViewById(R.id.messageInput); inputText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { if (actionId == EditorInfo.IME_NULL && keyEvent.getAction() == KeyEvent.ACTION_DOWN) { sendMessage(); } return true; } }); findViewById(R.id.sendButton).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { sendMessage(); } }); } @Override public void onStart() { super.onStart(); // Setup our view and list adapter. Ensure it scrolls to the bottom as data changes // Tell our list adapter that we only want 50 messages at a time chatListAdapter = new ChatListAdapter(ref.limit(50), this, R.layout.item_chat_list, username); listView.setAdapter(chatListAdapter); chatListAdapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { super.onChanged(); listView.setSelection(chatListAdapter.getCount() - 1); } }); // Finally, a little indication of connection status connectedListener = ref.getRoot().child(".info/connected").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { boolean connected = (Boolean)dataSnapshot.getValue(); if (connected) { Toast.makeText(MainActivity.this, "Connected to Firebase", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Disconnected from Firebase", Toast.LENGTH_SHORT).show(); } } @Override public void onCancelled(FirebaseError firebaseError) { // No-op } }); } @Override public void onStop() { super.onStop(); ref.getRoot().child(".info/connected").removeEventListener(connectedListener); chatListAdapter.cleanup(); } private void setupUsername() { SharedPreferences prefs = getApplication().getSharedPreferences("ChatPrefs", 0); username = prefs.getString("username", null); if (username == null) { Random r = new Random(); // Assign a random user name if we don't have one saved. username = "JavaUser" + r.nextInt(100000); prefs.edit().putString("username", username).commit(); } } private void sendMessage() { EditText inputText = (EditText)findViewById(R.id.messageInput); String input = inputText.getText().toString(); if (!input.equals("")) { // Create our 'model', a Chat object Chat chat = new Chat(input, username); // Create a new, auto-generated child of that chat location, and save our chat data there ref.push().setValue(chat); inputText.setText(""); } } }