<ImageButton
android:id="@+id/main_input_msg_btn"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"
android:src="@drawable/baseline_send_24"
android:background="?attr/selectableItemBackground"/>
android:background="?attr/selectableItemBackground"
public class Message {
public static String SENT_BY_ME = "me";
public static String SENT_BY_BOT="bot";
String message;
String sentBy;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getSentBy() {
return sentBy;
}
public void setSentBy(String sentBy) {
this.sentBy = sentBy;
}
public Message(String message, String sentBy) {
this.message = message;
this.sentBy = sentBy;
}
}
class Message(private var message: String, private var sendBy: String) {
companion object {
const val SEND_BY_USER = "USER"
const val SEND_BY_CHAT = "CHAT"
}
fun getMessage(): String {
return message
}
fun setMessage(message: String) {
this.message = message
}
fun getSendBy(): String {
return sendBy
}
fun setSendBy(sendBy: String) {
this.sendBy = sendBy
}
}
코틀린은 자바와 다르게 생성자의 매개변수들을 클래스 내에서 멤버 변수로 자동으로 만들어 주지 않기 때문에, 클래스 정의 내에서 생성자 매개변수를 private var
로 선언해야 한다. 또한 자바의 static
키워드는 코틀린에서 companion object
블록으로 대체된다.
private fun setAdapter() {
binding.mainChatRv.adapter = MessageAdapter(messageList)
val layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
layoutManager.stackFromEnd
binding.mainChatRv.layoutManager = layoutManager
}
layoutManager에 stackFromEnd
속성을 주면 recyclerView의 아이템을 채팅 화면처럼 출력이 가능하다. 가장 최근의 아이템이 맨 아래에 오게 된다.