Home | History | Annotate | Download | only in adaptertransition
      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      */
     46     public MeatAdapter(LayoutInflater inflater, int resourceId) {
     47         mLayoutInflater = inflater;
     48         mResourceId = resourceId;
     49     }
     50 
     51     @Override
     52     public int getCount() {
     53         return Meat.MEATS.length;
     54     }
     55 
     56     @Override
     57     public Meat getItem(int position) {
     58         return Meat.MEATS[position];
     59     }
     60 
     61     @Override
     62     public long getItemId(int position) {
     63         return Meat.MEATS[position].resourceId;
     64     }
     65 
     66     @Override
     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
     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