-
-
Save wirasetiawan29/52cb6f287601ff60b0123a7d7a97acbc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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