package com.devahoy.learn30androidlibraries.day30; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import com.devahoy.learn30androidlibraries.R; import com.firebase.client.ChildEventListener; import com.firebase.client.DataSnapshot; import com.firebase.client.Firebase; import com.firebase.client.FirebaseError; import com.firebase.client.Query; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; public class FireBaseActivity extends ActionBarActivity { private static final String AHOY_CHAT_URL = "https://ahoychat.firebaseio.com"; private List<String> mChats = new ArrayList<String>(); private ListView mListView; private ArrayAdapter<String> mAdapter; private ImageButton mButtonSend; private EditText mMessage; private Firebase mFirebase; private String mUsername; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Random r = new Random(); mUsername = "AhoyUser" + r.nextInt(1000); setContentView(R.layout.day30_activity_firebase); mButtonSend = (ImageButton) findViewById(R.id.button_send); mMessage = (EditText) findViewById(R.id.message); mListView = (ListView) findViewById(R.id.list_view); mListView.setBackgroundColor(Color.parseColor("#26B895")); mFirebase = new Firebase(AHOY_CHAT_URL).child("chat"); queryData(); mButtonSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendMessage(); } }); } private void sendMessage() { // Chat chat = new Chat(mMessage.getText().toString(), mUsername); Map<String, Object> chat = new HashMap<String, Object>(); chat.put("owner", mUsername); chat.put("message", mMessage.getText().toString()); mFirebase.push().setValue(chat); mMessage.setText(""); } private void queryData() { Query query = mFirebase.limit(10); query.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue(); String owner = newPost.get("owner").toString(); String message = newPost.get("message").toString(); mChats.add(0, owner + " Say: " + message); if (mAdapter == null) { mAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, mChats); mListView.setAdapter(mAdapter); } mAdapter.notifyDataSetChanged(); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { mAdapter.notifyDataSetChanged(); } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(FirebaseError firebaseError) { } }); } }