• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2014 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.example.android.adaptertransition;
18 
19 import android.content.Context;
20 import android.view.LayoutInflater;
21 import android.view.View;
22 import android.view.ViewGroup;
23 import android.widget.AbsListView;
24 import android.widget.AdapterView;
25 import android.widget.BaseAdapter;
26 import android.widget.ImageView;
27 import android.widget.TextView;
28 import android.widget.Toast;
29 
30 /**
31  * This class provides data as Views. It is designed to support both ListView and GridView by
32  * changing a layout resource file to inflate.
33  */
34 public class MeatAdapter extends BaseAdapter implements AbsListView.OnItemClickListener {
35 
36     private final LayoutInflater mLayoutInflater;
37     private final int mResourceId;
38 
39     /**
40      * Create a new instance of {@link MeatAdapter}.
41      *
42      * @param inflater   The layout inflater.
43      * @param resourceId The resource ID for the layout to be used. The layout should contain an
44      *                   ImageView with ID of "meat_image" and a TextView with ID of "meat_title".
45      */
MeatAdapter(LayoutInflater inflater, int resourceId)46     public MeatAdapter(LayoutInflater inflater, int resourceId) {
47         mLayoutInflater = inflater;
48         mResourceId = resourceId;
49     }
50 
51     @Override
getCount()52     public int getCount() {
53         return Meat.MEATS.length;
54     }
55 
56     @Override
getItem(int position)57     public Meat getItem(int position) {
58         return Meat.MEATS[position];
59     }
60 
61     @Override
getItemId(int position)62     public long getItemId(int position) {
63         return Meat.MEATS[position].resourceId;
64     }
65 
66     @Override
getView(int position, View convertView, ViewGroup parent)67     public View getView(int position, View convertView, ViewGroup parent) {
68         final View view;
69         final ViewHolder holder;
70         if (null == convertView) {
71             view = mLayoutInflater.inflate(mResourceId, parent, false);
72             holder = new ViewHolder();
73             assert view != null;
74             holder.image = (ImageView) view.findViewById(R.id.meat_image);
75             holder.title = (TextView) view.findViewById(R.id.meat_title);
76             view.setTag(holder);
77         } else {
78             view = convertView;
79             holder = (ViewHolder) view.getTag();
80         }
81         Meat meat = getItem(position);
82         holder.image.setImageResource(meat.resourceId);
83         holder.title.setText(meat.title);
84         return view;
85     }
86 
87     @Override
onItemClick(AdapterView<?> parent, View view, int position, long id)88     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
89         ViewHolder holder = (ViewHolder) view.getTag();
90         Context context = view.getContext();
91         if (null != holder && null != holder.title && null != context) {
92             Toast.makeText(context, context.getString(R.string.item_clicked,
93                     holder.title.getText()), Toast.LENGTH_SHORT).show();
94         }
95     }
96 
97     private static class ViewHolder {
98         public ImageView image;
99         public TextView title;
100     }
101 
102 }
103