상세 컨텐츠

본문 제목

[안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티

안드로이드

by aries574 2022. 10. 26. 15:44

본문


이번 시간에는 채팅앱 만들기 일곱 번째 시간

대화 상대를 선택해서 대화 화면으로 이동하는 방법을 알아보겠습니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.10.25 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part6 - Firebase 메뉴 생성 및 로그아웃

 

[안드로이드 코틀린] 채팅앱 만드는 방법 part6 - Firebase 메뉴 생성 및 로그아웃

이번 시간에는 채팅앱 만들기 여섯 번째 시간 메뉴를 추가해서 로그아웃 기능을 구현하겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.24 - [안드로이드] - [안드로이드 코틀린]

aries574.tistory.com


목차

1. 실행 화면
2. 채팅 화면 ChatActivity
3. 사용자 리스트 어댑터 UserAdapter.kt


1. 실행 화면

 

2. 채팅 화면 ChatActivity

app 선택 -> 마우스 오른쪽 클릭 -> New -> Activity -> Empty Activity

Activity name: ChatActivity

activity_chat.xml

- 설명 -

 1. 대화 내용 보여줄 RecyclerView

 2. 메시지 입력 EditText

 3. 메시지 전송 Button

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ChatActivity">

    <!-- 대화 내용 -->
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/chat_recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/input_layout"
        android:layout_alignParentTop="true" />

    <!-- 입력 레이아웃 -->
    <LinearLayout
        android:id="@+id/input_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="10dp"
        android:orientation="horizontal"
        android:weightSum="100">

        <EditText
            android:id="@+id/message_edit"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginStart="10dp"
            android:layout_weight="85"
            android:background="@drawable/edit_background"
            android:hint="메시지를 입력하세요"
            android:paddingStart="10dp" />

        <androidx.appcompat.widget.AppCompatButton
            android:id="@+id/send_btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginStart="10dp"
            android:layout_marginEnd="10dp"
            android:layout_weight="15"
            android:background="@drawable/btn_background"
            android:text="전송"
            android:textColor="@android:color/white" />
    </LinearLayout>
</RelativeLayout>

 

ChatActivity.kt

- 설명 -

 1. intent.getStringExtra("name").toString()

   넘어온 상대방 이름

 2. intent.getStringExtra("uid").toString()

   넘어온 상대방 uId

 3. supportActionBar?.title = receiverName

   액션 바에 상대방 이름 보여주기

class ChatActivity : AppCompatActivity() {

    private lateinit var receiverName: String
    private lateinit var receiverUid: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_chat)

        //넘어온 데이터 변수에 담기
        receiverName = intent.getStringExtra("name").toString()
        receiverUid = intent.getStringExtra("uId").toString()

        //액션바에 상대방 이름 보여주기
        supportActionBar?.title = receiverName
    }
}

 

 

반응형

 

3. 사용자 리스트 어댑터 UserAdapter.kt

- 설명 -

 1. holder.itemView.setOnClickListener

   아이템 클릭 이벤트

 2. intent.putExtra("name", currentUser.name) 

   넘겨줄 상대방 이름 담기

 3. intent.putExtra("uid", currentUser.uId)

   넘겨줄 상대방 uId 담기

class UserAdapter(private val context: Context, private val userList: ArrayList<User>):
 RecyclerView.Adapter<UserAdapter.UserViewHolder>(){

    /**
     * 화면 설정
     */
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
       val view: View = LayoutInflater.from(context).
       inflate(R.layout.user_layout, parent, false)

        return UserViewHolder(view)
    }

    /**
     * 데이터 설정
     */
    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {

        //데이터 담기
        val currentUser = userList[position]

        //화면에 데이터 보여주기
        holder.nameText.text = currentUser.name

        //아이템 클릭 이벤트
        holder.itemView.setOnClickListener {

            val intent  = Intent(context, ChatActivity::class.java)

            //넘길 데이터
            intent.putExtra("name", currentUser.name)
            intent.putExtra("uId", currentUser.uId)

            context.startActivity(intent)
        }
    }

    /**
     * 데이터 갯수 가져오기
     */
    override fun getItemCount(): Int {
        return userList.size
    }

    class UserViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

        val nameText: TextView = itemView.findViewById(R.id.name_text)
    }
}

2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법

 

[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법

이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 4. 메인 코드 MainActivity.kt 1. 실행 화면 2. ..

aries574.tistory.com

2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정

 

[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정

Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1. 권한 등록 2. 라이브러리 등록 3. 모델 클래스 4. 서비스 인터페

aries574.tistory.com

2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성

 

[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성

이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역