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