1
1
package com .firebase .uidemo ;
2
2
3
+ import android .graphics .Color ;
4
+ import android .graphics .drawable .Drawable ;
5
+ import android .graphics .drawable .GradientDrawable ;
6
+ import android .graphics .drawable .LayerDrawable ;
7
+ import android .graphics .drawable .ShapeDrawable ;
8
+ import android .graphics .drawable .shapes .Shape ;
3
9
import android .os .Bundle ;
4
10
import android .support .v7 .widget .LinearLayoutManager ;
5
11
import android .support .v7 .widget .RecyclerView ;
6
12
import android .util .Log ;
13
+ import android .view .Gravity ;
7
14
import android .view .Menu ;
8
15
import android .view .MenuInflater ;
9
16
import android .view .MenuItem ;
10
17
import android .view .View ;
11
18
import android .widget .Button ;
12
19
import android .widget .EditText ;
20
+ import android .widget .FrameLayout ;
21
+ import android .widget .LinearLayout ;
13
22
import android .widget .TextView ;
14
23
15
24
import com .firebase .client .AuthData ;
@@ -23,12 +32,15 @@ public class RecyclerViewDemoActivity extends FirebaseLoginBaseActivity {
23
32
24
33
public static String TAG = "FirebaseUI.chat" ;
25
34
private Firebase mRef ;
35
+ private Query mChatRef ;
26
36
private AuthData mAuthData ;
27
37
private String name ;
28
38
private String uid ;
29
39
private Button mSendButton ;
30
40
private EditText mMessageEdit ;
31
41
42
+ private RecyclerView mMessages ;
43
+
32
44
@ Override
33
45
protected void onCreate (Bundle savedInstanceState ) {
34
46
super .onCreate (savedInstanceState );
@@ -38,58 +50,55 @@ protected void onCreate(Bundle savedInstanceState) {
38
50
mMessageEdit = (EditText ) findViewById (R .id .messageEdit );
39
51
40
52
mRef = new Firebase ("https://firebaseui.firebaseio.com/chat_3" );
53
+ mChatRef = mRef .limitToLast (50 );
41
54
42
55
mSendButton .setOnClickListener (new View .OnClickListener () {
43
56
@ Override
44
57
public void onClick (View v ) {
45
- Chat chat = new Chat (name , mAuthData .getUid (), mMessageEdit .getText ().toString ());
46
- mRef .push ().setValue (chat , new Firebase .CompletionListener () {
47
- @ Override
48
- public void onComplete (FirebaseError firebaseError , Firebase firebase ) {
49
- if (firebaseError != null ) {
50
- Log .e (TAG , firebaseError .toString ());
51
- }
58
+ Chat chat = new Chat (name , mAuthData .getUid (), mMessageEdit .getText ().toString ());
59
+ mRef .push ().setValue (chat , new Firebase .CompletionListener () {
60
+ @ Override
61
+ public void onComplete (FirebaseError firebaseError , Firebase firebase ) {
62
+ if (firebaseError != null ) {
63
+ Log .e (TAG , firebaseError .toString ());
52
64
}
53
- });
54
- mMessageEdit .setText ("" );
65
+ }
66
+ });
67
+ mMessageEdit .setText ("" );
55
68
}
56
69
});
57
70
58
- updateChat ();
59
- }
60
-
61
- protected void updateChat () {
62
- final RecyclerView messages = (RecyclerView ) findViewById (R .id .messagesList );
71
+ mMessages = (RecyclerView ) findViewById (R .id .messagesList );
63
72
64
73
LinearLayoutManager manager = new LinearLayoutManager (this );
65
74
manager .setStackFromEnd (true );
66
75
67
- messages .setHasFixedSize (true );
68
- messages .setLayoutManager (manager );
76
+ mMessages .setHasFixedSize (true );
77
+ mMessages .setLayoutManager (manager );
78
+
69
79
70
- Query recentMessages = mRef .limitToLast (50 );
71
- FirebaseRecyclerViewAdapter <Chat , ChatHolder > adapter = new FirebaseRecyclerViewAdapter <Chat , ChatHolder >(Chat .class , R .layout .incoming_message , ChatHolder .class , recentMessages ) {
80
+ updateChat ();
81
+ }
82
+
83
+ protected void updateChat () {
84
+ FirebaseRecyclerViewAdapter <Chat , ChatHolder > adapter = new FirebaseRecyclerViewAdapter <Chat , ChatHolder >(Chat .class , R .layout .message , ChatHolder .class , mChatRef ) {
72
85
@ Override
73
86
public void populateViewHolder (ChatHolder chatView , Chat chat ) {
74
- chatView .textView .setText (chat .getText ());
75
- // chatView.textView.setPadding(30, 30, 30, 0);
76
- chatView .nameView .setText (chat .getName ());
77
- // chatView.nameView.setPadding(30, 0, 30, 30);
78
- // chatView.textView.setTextColor(Color.parseColor("#000000"));
79
- // chatView.textView.setTypeface(null, Typeface.NORMAL);
87
+
88
+ chatView .setName (chat .getName ());
89
+ chatView .setText (chat .getText ());
90
+
80
91
if (mAuthData != null && chat .getUid ().equals (mAuthData .getUid ())) {
81
- // chatView.textView.setGravity(Gravity.END);
82
- // chatView.nameView.setGravity(Gravity.END);
83
- // chatView.nameView.setTextColor(Color.parseColor("#AAAAAA"));
84
- // chatView.itemView.setBackground(getDrawable(R.drawable.outgoing_message));
92
+ // Is me
93
+ chatView .setSender (true );
85
94
} else {
86
- // chatView.nameView.setTextColor(Color.parseColor("#00BCD4") );
87
- // chatView.itemView.setBackground(getDrawable(R.drawable.incoming_message));
95
+ chatView .setSender ( false );
96
+ // Isn't me
88
97
}
89
98
}
90
99
};
91
100
92
- messages .setAdapter (adapter );
101
+ mMessages .setAdapter (adapter );
93
102
}
94
103
95
104
@ Override
@@ -122,10 +131,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
122
131
return super .onOptionsItemSelected (item );
123
132
}
124
133
125
-
126
-
127
- // Start of FirebaseLoginBaseActivity
128
-
129
134
@ Override
130
135
public void onFirebaseLoginSuccess (AuthData authData ) {
131
136
Log .i (TAG , "Logged in to " + authData .getProvider ().toString ());
@@ -168,8 +173,6 @@ public Firebase getFirebaseRef() {
168
173
return mRef ;
169
174
}
170
175
171
- // End of FirebaseLoginBaseActivity
172
-
173
176
public static class Chat {
174
177
String name ;
175
178
String text ;
@@ -198,14 +201,50 @@ public String getText() {
198
201
}
199
202
200
203
public static class ChatHolder extends RecyclerView .ViewHolder {
201
- TextView nameView , textView ;
202
- View itemView ;
204
+ View mView ;
203
205
204
206
public ChatHolder (View itemView ) {
205
207
super (itemView );
206
- this .itemView = itemView ;
207
- nameView = (TextView ) itemView .findViewById (R .id .name_text );
208
- textView = (TextView ) itemView .findViewById (R .id .message_text );
208
+ mView = itemView ;
209
+ }
210
+
211
+ public void setSender (Boolean isSender ) {
212
+ FrameLayout arrow ;
213
+
214
+ if (isSender ) {
215
+ arrow = (FrameLayout ) mView .findViewById (R .id .left_arrow );
216
+ } else {
217
+ arrow = (FrameLayout ) mView .findViewById (R .id .right_arrow );
218
+
219
+ View messageBox = mView .findViewById (R .id .message );
220
+ View messageArrow = mView .findViewById (R .id .left_arrow );
221
+
222
+ // LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams();
223
+ // lp.gravity= Gravity.RIGHT;
224
+ // mView.setLayoutParams(lp);
225
+
226
+
227
+
228
+
229
+
230
+ //GradientDrawable messageBoxBackground= (GradientDrawable) (messageBox.getBackground());
231
+ //messageBoxBackground.setColor(Color.MAGENTA);
232
+ //GradientDrawable messageArrowBackground = (GradientDrawable) (messageArrow.getBackground());
233
+ //messageArrowBackground.setColor(Color.MAGENTA);
234
+
235
+ }
236
+
237
+ arrow .setVisibility (View .GONE );
238
+ }
239
+
240
+ public void setName (String name ) {
241
+ TextView field = (TextView ) mView .findViewById (R .id .name_text );
242
+ field .setText (name );
243
+ }
244
+
245
+ public void setText (String text ) {
246
+ TextView field = (TextView ) mView .findViewById (R .id .message_text );
247
+ field .setText (text );
209
248
}
210
249
}
211
250
}
0 commit comments