이번 시간에는 등록한 사용자를 RecyclerView를 이용해서 리스트로 보여주는 방법에 대하여 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.06.25 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part2 - 데이터 등록
- 설명 -
1. 이름과 나이를 보여주는 TextView
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardCornerRadius="10dp"
app:cardElevation="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/name_text"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/age_text"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:textSize="20sp"
android:textStyle="bold"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
- 설명 -
1. 데이터와 아이템 화면을 연결해주는 클래스
class UserAdapter: RecyclerView.Adapter<UserAdapter.MyViewHolder>() {
private lateinit var userList: List<User>
class MyViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
val nameText: TextView = itemView.findViewById(R.id.name_text)
val ageText: TextView = itemView.findViewById(R.id.age_text)
}
//화면 설정
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val view: View = LayoutInflater.from(parent.context)
.inflate(R.layout.list_item, parent, false)
return MyViewHolder(view)
}
//데이터 설정
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.nameText.text = userList[holder.adapterPosition].userName
holder.ageText.text = userList[holder.adapterPosition].userAge
}
//아이템 갯수
override fun getItemCount(): Int {
return userList.size
}
//아이템 등록
fun setUserList(userList: List<User>){
this.userList = userList
}
}
- 설명 -
1. adapter = UserAdapter()
Adapter 초기화
2. recyclerView.adapter = adapter
RecyclerView Adapter 적용
3. adapter.setUserList(userList)
Adapter에 데이터 적용
class MainActivity : AppCompatActivity() {
private lateinit var adapter: UserAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val insertBtn: FloatingActionButton = findViewById(R.id.insert_btn)
insertBtn.setOnClickListener {
val intent: Intent = Intent(this, InsertActivity::class.java)
activityResult.launch(intent)
}
//RecyclerView 설정
val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
//UserAdapetr 초기화
adapter = UserAdapter()
//Adapter 적용
recyclerView.adapter = adapter
//사용자 조회
loadUserList()
}
private val activityResult: ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()){
if(it.resultCode == RESULT_OK){
//돌아온 값이 OK라면
//사용자 조회
loadUserList()
}
}
//사용자 조회
private fun loadUserList(){
val db: AppDatabase? = AppDatabase.getDatabase(applicationContext)
val userList: List<User> = db?.userDao()!!.getAllUser()
if(userList.isNotEmpty()){
//데이터 적용
adapter.setUserList(userList)
}
}
}
2022.06.20 - [안드로이드] - [안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 갤러리 느낌으로 만드는 방법
2022.06.17 - [안드로이드] - [안드로이드 코틀린] 정해진 시간에 알람 울리는 방법 Notification TimePickerDialog part1 - 설정
2022.06.14 - [안드로이드] - [안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정
[안드로이드 코틀린] Database Room 사용법 part5 - 삭제 (0) | 2022.06.28 |
---|---|
[안드로이드 코틀린] Database Room 사용법 part4 - 수정 (0) | 2022.06.27 |
[안드로이드 코틀린] Database Room 사용법 part2 - 데이터 등록 (0) | 2022.06.25 |
[안드로이드 코틀린] Database Room 사용법 part1 - Room 설정 (0) | 2022.06.24 |
[안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 화면 변경 버튼 만드는 방법 (0) | 2022.06.23 |
댓글 영역