diff options
Diffstat (limited to 'androidx/car/drawer/DrawerItemViewHolder.java')
-rw-r--r-- | androidx/car/drawer/DrawerItemViewHolder.java | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/androidx/car/drawer/DrawerItemViewHolder.java b/androidx/car/drawer/DrawerItemViewHolder.java new file mode 100644 index 00000000..8bbded99 --- /dev/null +++ b/androidx/car/drawer/DrawerItemViewHolder.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2017 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 androidx.car.drawer; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.car.R; + +/** + * Re-usable {@link RecyclerView.ViewHolder} for displaying items in the + * {@link androidx.car.drawer.CarDrawerAdapter}. + */ +public class DrawerItemViewHolder extends RecyclerView.ViewHolder { + private final ImageView mIcon; + private final TextView mTitle; + private final TextView mText; + private final ImageView mEndIcon; + + DrawerItemViewHolder(View view) { + super(view); + mIcon = view.findViewById(R.id.icon); + if (mIcon == null) { + throw new IllegalArgumentException("Icon view cannot be null!"); + } + + mTitle = view.findViewById(R.id.title); + if (mTitle == null) { + throw new IllegalArgumentException("Title view cannot be null!"); + } + + // Next two are optional and may be null. + mText = view.findViewById(R.id.text); + mEndIcon = view.findViewById(R.id.end_icon); + } + + /** Returns the view that should be used to display the main icon. */ + @NonNull + public ImageView getIcon() { + return mIcon; + } + + /** Returns the view that will display the main title. */ + @NonNull + public TextView getTitle() { + return mTitle; + } + + /** Returns the view that is used for text that is smaller than the title text. */ + @Nullable + public TextView getText() { + return mText; + } + + /** Returns the icon that is displayed at the end of the view. */ + @Nullable + public ImageView getEndIcon() { + return mEndIcon; + } + + /** + * Sets the listener that will be notified when the view held by this ViewHolder has been + * clicked. Passing {@code null} will clear any previously set listeners. + */ + void setItemClickListener(@Nullable DrawerItemClickListener listener) { + itemView.setOnClickListener(listener != null + ? v -> listener.onItemClick(getAdapterPosition()) + : null); + } +} |