Skip to content

Instantly share code, notes, and snippets.

@wirasetiawan29
Created May 19, 2016 08:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wirasetiawan29/52cb6f287601ff60b0123a7d7a97acbc to your computer and use it in GitHub Desktop.
Save wirasetiawan29/52cb6f287601ff60b0123a7d7a97acbc to your computer and use it in GitHub Desktop.
public class MainActivity extends AppCompatActivity {
public static String TAG = "FirebaseUI.chat";
private Firebase mRef;
private Query mChatRef;
private long userId = 2;
private String mName = "Upin";
private String mTime;
private Button mSendButton;
private EditText mMessageEdit;
private RecyclerView mMessages;
private FirebaseRecyclerAdapter<ChatModel, ChatHolder> mRecycleViewAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Firebase.setAndroidContext(this);
mSendButton = (Button) findViewById(R.id.sendButton);
mMessageEdit = (EditText) findViewById(R.id.messageEdit);
mSendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// showFirebaseLoginPrompt();
}
});
mRef = new Firebase("https://wirasetiawan29.firebaseio.com/chat");
mChatRef = mRef.limitToLast(50);
mSendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChatModel chat = new ChatModel(mMessageEdit.getText().toString(), mName, userId, System.currentTimeMillis(), mTime);
mRef.push().setValue(chat, new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase) {
if (firebaseError != null) {
Log.e(TAG, firebaseError.toString());
}
}
});
mMessageEdit.setText("");
}
});
mMessages = (RecyclerView) findViewById(R.id.messagesList);
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setReverseLayout(false);
mMessages.setHasFixedSize(false);
mMessages.setLayoutManager(manager);
mRecycleViewAdapter = new FirebaseRecyclerAdapter<ChatModel, ChatHolder>(ChatModel.class, R.layout.text_message, ChatHolder.class, mChatRef) {
@Override
public void populateViewHolder(ChatHolder chatView, ChatModel chat, int position) {
chatView.setText(chat.getMessage());
chatView.setName(chat.getName());
chatView.setTime(chat.getFormattedTime());
if (chat.getUserId() == 2) {
chatView.setIsSender(true);
} else {
chatView.setIsSender(false);
}
}
};
mMessages.setAdapter(mRecycleViewAdapter);
}
public static class ChatHolder extends RecyclerView.ViewHolder {
View mView;
public ChatHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setIsSender(Boolean isSender) {
FrameLayout left_arrow = (FrameLayout) mView.findViewById(R.id.left_arrow);
FrameLayout right_arrow = (FrameLayout) mView.findViewById(R.id.right_arrow);
RelativeLayout messageContainer = (RelativeLayout) mView.findViewById(R.id.message_container);
LinearLayout message = (LinearLayout) mView.findViewById(R.id.message);
if (isSender) {
left_arrow.setVisibility(View.GONE);
right_arrow.setVisibility(View.VISIBLE);
messageContainer.setGravity(Gravity.RIGHT);
} else {
left_arrow.setVisibility(View.VISIBLE);
right_arrow.setVisibility(View.GONE);
messageContainer.setGravity(Gravity.LEFT);
}
}
public void setName(String name) {
TextView field = (TextView) mView.findViewById(R.id.name_text);
field.setText(name);
}
public void setText(String text) {
TextView field = (TextView) mView.findViewById(R.id.message_text);
field.setText(text);
}
public void setTime(String time){
TextView field = (TextView) mView.findViewById(R.id.time_text);
field.setText(time);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment