amjadArabia

FireBase LiveChat code

Dec 1st, 2017
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.76 KB | None | 0 0
  1. MainActivity
  2. ======================
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.support.v7.app.AlertDialog;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.widget.AdapterView;
  10. import android.widget.ArrayAdapter;
  11. import android.widget.Button;
  12. import android.widget.EditText;
  13. import android.widget.ListView;
  14. import android.widget.TextView;
  15.  
  16.  
  17. import com.google.firebase.database.DataSnapshot;
  18. import com.google.firebase.database.DatabaseError;
  19. import com.google.firebase.database.DatabaseReference;
  20. import com.google.firebase.database.FirebaseDatabase;
  21. import com.google.firebase.database.ValueEventListener;
  22.  
  23. import java.util.ArrayList;
  24. import java.util.HashMap;
  25. import java.util.HashSet;
  26. import java.util.Iterator;
  27. import java.util.Map;
  28. import java.util.Set;
  29.  
  30. public class MainActivity extends AppCompatActivity {
  31.  
  32.  
  33.     private Button add_user;
  34.     private EditText room_name;
  35.  
  36.     private ListView listView;
  37.     private ArrayAdapter<String> arrayAdapter;
  38.     private ArrayList<String> list_of_users = new ArrayList<>();
  39.     private String name;
  40.     private DatabaseReference root = FirebaseDatabase.getInstance().getReference().getRoot();
  41.  
  42.     @Override
  43.     protected void onCreate(Bundle savedInstanceState) {
  44.         super.onCreate(savedInstanceState);
  45.         setContentView(R.layout.activity_main);
  46.         setPointer();
  47.     }
  48.  
  49.     private void setPointer() {
  50.         add_user = (Button) findViewById(R.id.btn_add_room);
  51.         room_name = (EditText) findViewById(R.id.room_name_edittext);
  52.         listView = (ListView) findViewById(R.id.listView);
  53.  
  54.         arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list_of_users);
  55.  
  56.         listView.setAdapter(arrayAdapter);
  57.  
  58.         request_user_name();
  59.  
  60.         add_user.setOnClickListener(new View.OnClickListener() {
  61.             @Override
  62.             public void onClick(View view) {
  63.  
  64.                 Map<String, Object> map = new HashMap<String, Object>();
  65.                 map.put(room_name.getText().toString(), "");
  66.                 root.updateChildren(map);
  67.                 room_name.setText("");
  68.  
  69.  
  70.             }
  71.         });
  72.  
  73.         root.addValueEventListener(new ValueEventListener() {
  74.             @Override
  75.             public void onDataChange(DataSnapshot dataSnapshot) {
  76.  
  77.                 Set<String> set = new HashSet<String>();
  78.                 Iterator i = dataSnapshot.getChildren().iterator();
  79.  
  80.                 while (i.hasNext()) {
  81.                     set.add(((DataSnapshot) i.next()).getKey());
  82.                 }
  83.  
  84.                 list_of_users.clear();
  85.                 list_of_users.addAll(set);
  86.  
  87.                 arrayAdapter.notifyDataSetChanged();
  88.             }
  89.  
  90.             @Override
  91.             public void onCancelled(DatabaseError databaseError) {
  92.  
  93.             }
  94.         });
  95.  
  96.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  97.             @Override
  98.             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  99.  
  100.                 Intent intent = new Intent(getApplicationContext(), Chat_Room.class);
  101.                 intent.putExtra("room_name", ((TextView) view).getText().toString());
  102.                 intent.putExtra("user_name", "(" + name + ") ");
  103.                 startActivity(intent);
  104.             }
  105.         });
  106.  
  107.     }
  108.  
  109.     private void request_user_name() {
  110.         AlertDialog.Builder builder = new AlertDialog.Builder(this);
  111.         builder.setTitle("Enter name:");
  112.  
  113.         final EditText input_field = new EditText(this);
  114.         builder.setIcon(R.drawable.chat);
  115.         builder.setView(input_field);
  116.         builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
  117.             @Override
  118.             public void onClick(DialogInterface dialogInterface, int i) {
  119.                 name = input_field.getText().toString();
  120.             }
  121.         });
  122.  
  123.         builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  124.             @Override
  125.             public void onClick(DialogInterface dialogInterface, int i) {
  126.                 dialogInterface.cancel();
  127.                 request_user_name();
  128.             }
  129.         });
  130.  
  131.         builder.show();
  132.     }
  133.  
  134.  
  135. }
  136.  
  137. Chat_Users
  138. ====================
  139. import android.os.Bundle;
  140. import android.support.annotation.Nullable;
  141. import android.support.v7.app.AppCompatActivity;
  142. import android.view.View;
  143. import android.widget.Button;
  144. import android.widget.EditText;
  145. import android.widget.TextView;
  146.  
  147. import com.google.firebase.database.ChildEventListener;
  148. import com.google.firebase.database.DataSnapshot;
  149. import com.google.firebase.database.DatabaseError;
  150. import com.google.firebase.database.DatabaseReference;
  151. import com.google.firebase.database.FirebaseDatabase;
  152.  
  153. import java.util.HashMap;
  154. import java.util.Iterator;
  155. import java.util.Map;
  156.  
  157.  
  158. class Chat_Room extends AppCompatActivity{
  159.  
  160.     private Button btn_send_msg;
  161.     private EditText input_msg;
  162.     private TextView chat_conversation;
  163.  
  164.     private String user_name,room_name;
  165.     private DatabaseReference root ;
  166.     private String temp_key;
  167.  
  168.     @Override
  169.     protected void onCreate(@Nullable Bundle savedInstanceState) {
  170.         super.onCreate(savedInstanceState);
  171.         setContentView(R.layout.chat_room);
  172.  
  173.         btn_send_msg = (Button) findViewById(R.id.btn_send);
  174.         input_msg = (EditText) findViewById(R.id.msg_input);
  175.         chat_conversation = (TextView) findViewById(R.id.textView);
  176.  
  177.         user_name = getIntent().getExtras().get("user_name").toString();
  178.         room_name = getIntent().getExtras().get("room_name").toString();
  179.         setTitle(" User - "+room_name);
  180.  
  181.         root = FirebaseDatabase.getInstance().getReference().child(room_name);
  182.  
  183.         btn_send_msg.setOnClickListener(new View.OnClickListener() {
  184.             @Override
  185.             public void onClick(View view) {
  186.  
  187.                 Map<String,Object> map = new HashMap<String, Object>();
  188.                 temp_key = root.push().getKey();
  189.                 root.updateChildren(map);
  190.  
  191.                 DatabaseReference message_root = root.child(temp_key);
  192.                 Map<String,Object> map2 = new HashMap<String, Object>();
  193.                 map2.put("name",user_name);
  194.                 map2.put("msg",input_msg.getText().toString());
  195.                 input_msg.setText("");
  196.                 message_root.updateChildren(map2);
  197.             }
  198.         });
  199.  
  200.         root.addChildEventListener(new ChildEventListener() {
  201.             @Override
  202.             public void onChildAdded(DataSnapshot dataSnapshot, String s) {
  203.  
  204.                 append_chat_conversation(dataSnapshot);
  205.             }
  206.  
  207.             @Override
  208.             public void onChildChanged(DataSnapshot dataSnapshot, String s) {
  209.  
  210.                 append_chat_conversation(dataSnapshot);
  211.  
  212.             }
  213.  
  214.             @Override
  215.             public void onChildRemoved(DataSnapshot dataSnapshot) {
  216.  
  217.             }
  218.  
  219.             @Override
  220.             public void onChildMoved(DataSnapshot dataSnapshot, String s) {
  221.  
  222.             }
  223.  
  224.             @Override
  225.             public void onCancelled(DatabaseError databaseError) {
  226.  
  227.             }
  228.         });
  229.  
  230.     }
  231.  
  232.     private String chat_msg,chat_user_name;
  233.  
  234.     private void append_chat_conversation(DataSnapshot dataSnapshot) {
  235.  
  236.         Iterator i = dataSnapshot.getChildren().iterator();
  237.  
  238.         while (i.hasNext()){
  239.  
  240.             chat_msg = (String) ((DataSnapshot)i.next()).getValue();
  241.             chat_user_name = (String) ((DataSnapshot)i.next()).getValue();
  242.  
  243.             chat_conversation.append(chat_user_name +" : "+chat_msg +" \n");
  244.         }
  245.  
  246.  
  247.     }
  248. }
Add Comment
Please, Sign In to add comment