-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChatRoomActivity
121 lines (99 loc) · 4.91 KB
/
ChatRoomActivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.example.bilkentcompanion.chat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import de.hdodenhof.circleimageview.CircleImageView;
public class ChatRoomActivity extends AppCompatActivity {
private View privateChatsView;
private RecyclerView chatsList;
private DatabaseReference chatsRef, usersRef;
private FirebaseAuth mAuth;
private String currentUserID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_room);
mAuth = FirebaseAuth.getInstance();
currentUserID = mAuth.getCurrentUser().getUid();
chatsRef = FirebaseDatabase.getInstance().getReference().child("Contacts").child( currentUserID);
usersRef = FirebaseDatabase.getInstance().getReference().child("Users");
chatsList = (RecyclerView) findViewById(R.id.chats_list2);
chatsList.setLayoutManager( new LinearLayoutManager( ChatRoomActivity.this));
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions<Contacts> options = new FirebaseRecyclerOptions.Builder<Contacts>()
.setQuery( chatsRef, Contacts.class).build();
FirebaseRecyclerAdapter<Contacts, ContactsFragment.ChatsViewHolder> adapter = new FirebaseRecyclerAdapter<Contacts, ContactsFragment.ChatsViewHolder>( options) {
@Override
protected void onBindViewHolder(@NonNull final ContactsFragment.ChatsViewHolder holder, int position, @NonNull Contacts model) {
final String usersIDs = getRef( position).getKey();
usersRef.child( usersIDs).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if ( dataSnapshot.exists())
{
if ( dataSnapshot.hasChild("image"))
{
final String retImage = dataSnapshot.child("image").getValue().toString();
}
final String retName = dataSnapshot.child("name").getValue().toString();
final String retStatus = dataSnapshot.child("image").getValue().toString();
holder.userName.setText( retName);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent chatIntent = new Intent( ChatRoomActivity.this, ChatActivity.class);
chatIntent.putExtra("visit_user_id", usersIDs);
chatIntent.putExtra("visit_user_name", retName);
startActivity( chatIntent);
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@NonNull
@Override
public ContactsFragment.ChatsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from( viewGroup.getContext()).inflate(R.layout.users_display_layout, viewGroup, false);
return new ContactsFragment.ChatsViewHolder( view);
}
};
chatsList.setAdapter( adapter);
adapter.startListening();
}
public static class ChatsViewHolder extends RecyclerView.ViewHolder
{
CircleImageView profileImage;
TextView userStatus, userName;
public ChatsViewHolder(@NonNull View itemView)
{
super( itemView);
profileImage = itemView.findViewById(R.id.users_profile_image);
userStatus = itemView.findViewById(R.id.user_status);
userName = itemView.findViewById(R.id.user_profile_name);
}
}
}