Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 프로그래머스
- 코틀린 data class
- class
- add view
- 내용의동일성
- 코틀린 제너릭
- 코틀린 중첩클래스
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- lateinit
- kotlin recyclerview
- kakao blind
- 코틀린 문자열
- Kotlin Generic
- 코틀린 람다함수
- 코틀린
- 코틀린 lateinit
- 코틀린 컬렉션함수
- 컬렉션함수
- 해시
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- 코틀린 내부 클래스
- collection function
- isNullOrBlank
- kotlin listview
- Kotlin
- 컬렉션 함수
- 카카오 순위검색
- 객체의 동일성
- kotlin addview
- kotlin collection
Archives
- Today
- Total
엔지니어 규의 IT 프로그래밍 다이어리
Android List View(3) - Recycler View 본문
728x90
RecyclerView
장점
-listView의 개선판 (ViewHolder 를 포함)
-유연하다 ( LayoutManager 관리를 통해 1. Linear, 2. Grid, 3. StaggeredGrid.. 등등 을 쓸수있다.)
- ListView 중에 RecyclerView 가 가장 성능이 좋기때문에 고민할 필요없이 RecyclerView를 사용하면 된다.

위 앱을 다시 RecyclerView 로 만들어보자.
package com.example.recyclerview
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import java.util.ArrayList
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val carList = ArrayList<CarForList>()
for (i in 0 until 20) {
carList.add(CarForList("" + i + "번째 자동차", "" + i + "번째 엔진"))
}
val adapter = RecyclerViewAdapter(carList, LayoutInflater.from(this@MainActivity))
val recycler_view = findViewById<RecyclerView>(R.id.recycler_view)
recycler_view.adapter = adapter
recycler_view.layoutManager = LinearLayoutManager(this@MainActivity)
}
}
class CarForList(val name: String, val engine: String) {}
class RecyclerViewAdapter(
val itemList : ArrayList<CarForList>,
val inflater : LayoutInflater
) : RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>(){
class ViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){
val carName: TextView
val carEngine: TextView
init{
carName = itemView.findViewById(R.id.car_name)
carEngine = itemView.findViewById(R.id.car_engine)
}
}
override fun getItemCount(): Int {
return itemList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.carName.setText(itemList.get(position).name)
holder.carEngine.setText(itemList.get(position).name)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = inflater.inflate(R.layout.item_view,parent,false)
return ViewHolder(view)
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#0FC9CF"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/car_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="6dp"
android:textSize="20dp">
</TextView>
<TextView
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#B53E6BDC">
</TextView>
<TextView
android:id="@+id/car_engine"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20dp">
</TextView>
</LinearLayout>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="1dp">
</androidx.appcompat.widget.LinearLayoutCompat>
</LinearLayout>
<?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"
tools:context=".MainActivity"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
728x90