1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 package com.android.customization.picker.clock.ui.adapter
18 
19 import android.view.LayoutInflater
20 import android.view.View
21 import android.view.ViewGroup
22 import android.widget.TextView
23 import androidx.recyclerview.widget.RecyclerView
24 import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsTabViewModel
25 import com.android.themepicker.R
26 
27 /** Adapter for the tab recycler view on the clock settings screen. */
28 class ClockSettingsTabAdapter : RecyclerView.Adapter<ClockSettingsTabAdapter.ViewHolder>() {
29 
30     private val items = mutableListOf<ClockSettingsTabViewModel>()
31 
setItemsnull32     fun setItems(items: List<ClockSettingsTabViewModel>) {
33         this.items.clear()
34         this.items.addAll(items)
35         notifyDataSetChanged()
36     }
37 
getItemCountnull38     override fun getItemCount(): Int {
39         return items.size
40     }
41 
onCreateViewHoldernull42     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
43         return ViewHolder(
44             LayoutInflater.from(parent.context)
45                 .inflate(
46                     R.layout.picker_fragment_tab,
47                     parent,
48                     false,
49                 )
50         )
51     }
52 
onBindViewHoldernull53     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
54         val item = items[position]
55         holder.itemView.isSelected = item.isSelected
56         holder.textView.text = item.name
57         holder.itemView.setOnClickListener(
58             if (item.onClicked != null) {
59                 View.OnClickListener { item.onClicked.invoke() }
60             } else {
61                 null
62             }
63         )
64     }
65 
66     class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
67         val textView: TextView = itemView.requireViewById(R.id.text)
68     }
69 }
70