ResourceCache.java revision ad31f63f5843898de645f6ee1ac244c872ded8cc
1/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
12 * the License.
13 */
14
15package android.support.v17.leanback.supportleanbackshowcase.utils;
16
17import android.util.SparseArray;
18import android.view.View;
19
20/**
21 * ResourceCache allows retrieving children from a given view and caches the resulting views in
22 * order to prevent future lookups.
23 */
24public class ResourceCache {
25
26    private final SparseArray<View> mCachedViews = new SparseArray<View>();
27
28    public <ViewType extends View> ViewType getViewById(View view, int resId) {
29        View child = mCachedViews.get(resId, null);
30        if (child == null) {
31            child = view.findViewById(resId);
32            mCachedViews.put(resId, child);
33        }
34        return (ViewType) child;
35    }
36}
37