이번 시간에는 리스트에 쓰이는 RecyclerView 화면에서 홀수 행, 짝수 행 별 색상 다르게 보여주는 방법 알아보겠습니다.
- 설명 -
1. 아이템 보여주는 화면
2. 간단한 데이터 보여주는 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_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/item_text"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="5dp"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
- 설명 -
1. 아이템 화면과 데이터를 연결해주는 어댑터 클래스
2. constructor(context: Context)
생성자에 Context 매개변수 추가
색상을 변경하기 위해 Context가 필요함
3. onCreateViewHolder
화면 설정 함수
4. onBindViewHolder
데이터 설정 함수
5. holder.layout.setBackgroundColor
위치에 따라 배경색상 변경
class ListAdapter(): RecyclerView.Adapter<ListAdapter.ItemViewHolder>() {
lateinit var context: Context
var itemList: ArrayList<String> = ArrayList()
constructor(context: Context): this(){
this.context = context
}
/**
* 화면 설정
*/
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
val inflater: LayoutInflater = LayoutInflater.from(parent.context)
val view: View = inflater.inflate(R.layout.list_item, parent, false)
return ItemViewHolder(view)
}
/**
* 데이터 설정
*/
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
//데이터 넣기
holder.itemText.text = itemList[position]
//위치에 따른 홀수, 짝수행 색상 변경
if(position % 2 == 1){ //홀수행
holder.layout.setBackgroundColor(ContextCompat.getColor(context,
android.R.color.holo_green_dark))
}else{//짝수행
holder.layout.setBackgroundColor(ContextCompat.getColor(context,
android.R.color.holo_green_light))
}
}
/**
* 아이템 갯수 가져오기
*/
override fun getItemCount(): Int = itemList.size
/**
* 아이템 추가
*/
fun addItem(item: String){
itemList.add(item)
}
class ItemViewHolder(view: View): RecyclerView.ViewHolder(view){
//객체 생성
val layout: LinearLayout = view.findViewById(R.id.layout)
val itemText: TextView = view.findViewById(R.id.item_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"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
- 설명 -
1. ListAdapter(this)
어댑터에 Context 전달
2. recyclerView.adapter = adapter
RecyclerView Adapter 적용
3. sampleData
샘플 데이터 생성
class MainActivity : AppCompatActivity() {
lateinit var adapter: ListAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//recyclerView 설정
val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
//Adapter 설정
adapter = ListAdapter(this)
//Adapter 적용
recyclerView.adapter = adapter
//샘플데이터 생성
sampleData()
}//onCreate()
fun sampleData(){
//반복( 0 ~ 20 )
for(i in 0..20){
//어댑터에 데이터 추가
adapter.addItem("Item $i")
}
//적용
adapter.notifyDataSetChanged()
}
}
2022.09.14 - [안드로이드] - [안드로이드 코틀린] SQLite ToDo List 만드는 방법 part1 - Data 클래스와 DB 클래스
2022.09.13 - [안드로이드] - [안드로이드 코틀린] 액티비티(Activity) 뒤로가기 버튼 만드는 방법
2022.08.11 - [안드로이드] - [안드로이드 코틀린 ] RecyclerView Item Animation 서서히 나타나는 효과 주는 방법 part1
[안드로이드 코틀린] SharedPreferences 간단한 데이터 저장하는 방법 (0) | 2022.09.21 |
---|---|
[안드로이드 코틀린] 코드(MainActivity) 에서 배경 색상 바꾸는 다양한 방법 (0) | 2022.09.20 |
[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part3 - 메인 화면과 메인 코드 (2) | 2022.09.16 |
[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part2 - 할 일 화면과 어댑터 클래스 (0) | 2022.09.15 |
[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part1 - Data 클래스와 DB 클래스 (0) | 2022.09.14 |
댓글 영역