이번 시간에는 채팅앱 만들기 다섯 번째 시간
로그인을 하면 등록한 사용자 리스트를 보여주는 방법을 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.10.21 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part4 - Firebase 로그인 기능과 사용자 저장 기능
- 설명 -
1. 사용자 이름을 보여주는 TextView
2. 사용자를 구분해주는 선 View
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/name_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:textSize="30sp"
android:textStyle="bold"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/name_text"
android:layout_marginTop="5dp"
android:background="@android:color/black"/>
</RelativeLayout>
1. class UserAdapter(val context: Context, val userList: ArrayList<User>)
생성 시에 Context와 ArrayList를 넘겨받는다.
2. onCreateViewHolder
화면 연결하는 기능
3. onBindViewHolder
데이터 연결 기능
4. getItemCount
데이터 개수 돌려주는 기능
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
}
/**
* 데이터 갯수 가져오기
*/
override fun getItemCount(): Int {
return userList.size
}
class UserViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
val nameText: TextView = itemView.findViewById(R.id.name_text)
}
}
- 설명 -
1. 사용자 리스트 보여주는 RecyclerView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/user_recycelrView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/user_layout" />
</LinearLayout>
- 설명 -
1. mAuth = Firebase.auth
인증 서비스 객체 초기화
2. mDbRef = Firebase.database.reference
실시간 데이터베이스 객체 초기화
3. addValueEventListener
해당 경로 데이터 가져오기
4. onDataChange
데이터 변경 시에 실행
5. onCancelled
오류 발생 시에 실행
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
lateinit var adapter: UserAdapter
private lateinit var mAuth: FirebaseAuth
private lateinit var mDbRef: DatabaseReference
private lateinit var userList: ArrayList<User>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//인증 초기화
mAuth = Firebase.auth
//db 초기화
mDbRef = Firebase.database.reference
//리스트 초기화
userList = ArrayList()
adapter = UserAdapter(this, userList)
binding.userRecycelrView.layoutManager = LinearLayoutManager(this)
binding.userRecycelrView.adapter = adapter
//사용자 정보 가져오기
mDbRef.child("user").addValueEventListener(object:ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
for(postSnapshot in snapshot.children){
//유저 정보
val currentUser = postSnapshot.getValue(User::class.java)
if(mAuth.currentUser?.uid != currentUser?.uId){
userList.add(currentUser!!)
}
}
adapter.notifyDataSetChanged()
}
override fun onCancelled(error: DatabaseError) {
//실패 시 실행
}
})
}//onCreate
}
2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법
2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성
2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정
[안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티 (0) | 2022.10.26 |
---|---|
[안드로이드 코틀린] 채팅앱 만드는 방법 part6 - Firebase 메뉴 생성 및 로그아웃 (2) | 2022.10.25 |
[안드로이드 코틀린] 채팅앱 만드는 방법 part4 - Firebase 로그인 기능과 사용자 저장 기능 (0) | 2022.10.21 |
[안드로이드 코틀린] 채팅앱 만드는 방법 part3 - Firebase 인증 서비스 (2) | 2022.10.20 |
[안드로이드 코틀린] 채팅앱 만드는 방법 part2 - 회원가입 액티비티 (2) | 2022.10.19 |
댓글 영역