/* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.devicelockcontroller.activities; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import com.android.devicelockcontroller.R; import com.android.devicelockcontroller.activities.util.UrlUtils; /** * A {@link androidx.recyclerview.widget.RecyclerView.ViewHolder} class which describes the item * views used in the {@link RecyclerView} */ final class DevicePolicyGroupViewHolder extends RecyclerView.ViewHolder { private static final String TAG = "DevicePolicyGroupViewHolder"; private final TextView mGroupTitleTextView; private final ViewGroup mDevicePolicyItems; DevicePolicyGroupViewHolder(View iteView) { super(iteView); mGroupTitleTextView = iteView.findViewById(R.id.text_view_device_policy_group_title); mDevicePolicyItems = iteView.findViewById(R.id.device_policy_items); } void bind(DevicePolicyGroup devicePolicyGroup, int maxDevicePolicy, String providerName) { Context context = itemView.getContext(); mGroupTitleTextView.setText( context.getString(devicePolicyGroup.getGroupTitleTextId(), providerName)); for (int i = 0; i < devicePolicyGroup.getDevicePolicyList().size(); ++i) { TextView devicePolicyItemView = (TextView) mDevicePolicyItems.getChildAt(i); DevicePolicy devicePolicy = devicePolicyGroup.getDevicePolicyList().get(i); String policyText = context.getString(devicePolicy.getTextId(), providerName); UrlUtils.setUrlText(devicePolicyItemView, policyText); // Focus is set to false because we want all the views to fall under the parent // container when it is focused devicePolicyItemView.setFocusable(false); devicePolicyItemView.setCompoundDrawablesRelativeWithIntrinsicBounds( devicePolicy.getDrawableId(), /* top=*/ 0, /* end=*/ 0, /* bottom=*/ 0); devicePolicyItemView.setVisibility(View.VISIBLE); } // not every DevicePolicyGroup has the maximum number of DevicePolicy, hide the extra views for (int i = devicePolicyGroup.getDevicePolicyList().size(); i < maxDevicePolicy; ++i) { TextView devicePolicyItemView = (TextView) mDevicePolicyItems.getChildAt(i); devicePolicyItemView.setVisibility(View.GONE); } } }