10dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose/* 20dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * Copyright (C) 2007 The Android Open Source Project 30dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 40dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * Licensed under the Apache License, Version 2.0 (the "License"); 50dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * you may not use this file except in compliance with the License. 60dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * You may obtain a copy of the License at 70dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 80dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * http://www.apache.org/licenses/LICENSE-2.0 90dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 100dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * Unless required by applicable law or agreed to in writing, software 110dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * distributed under the License is distributed on an "AS IS" BASIS, 120dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * See the License for the specific language governing permissions and 140dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * limitations under the License. 150dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose */ 160dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 170dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rosepackage com.xtremelabs.robolectric.shadows; 180dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 190dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport com.xtremelabs.robolectric.internal.Implementation; 200dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport com.xtremelabs.robolectric.internal.Implements; 210dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 220dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport android.content.Context; 230dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport android.database.Cursor; 240dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport android.view.LayoutInflater; 250dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport android.view.View; 260dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport android.view.ViewGroup; 270dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Roseimport android.widget.ResourceCursorAdapter; 280dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 290dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 300dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose/** 310dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * An easy adapter that creates views defined in an XML file. You can specify 320dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * the XML file that defines the appearance of the views. 330dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose */ 340dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose@Implements(ResourceCursorAdapter.class) 350dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rosepublic class ShadowResourceCursorAdapter extends ShadowCursorAdapter { 360dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose private int mLayout; 370dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 380dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose private int mDropDownLayout; 390dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 400dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose private LayoutInflater mInflater; 410dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 420dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose /** 430dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * Constructor. 440dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 450dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param context The context where the ListView associated with this 460dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * SimpleListItemFactory is running 470dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param layout resource identifier of a layout file that defines the views 480dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * for this list item. Unless you override them later, this will 490dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * define both the item views and the drop down views. 500dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose */ 510dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose public void __constructor__(Context context, int layout, Cursor c) { 520dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose super.__constructor__(context, c); 530dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose mLayout = mDropDownLayout = layout; 540dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 550dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose } 560dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 570dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose /** 580dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * Constructor. 590dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 600dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param context The context where the ListView associated with this 610dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * SimpleListItemFactory is running 620dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param layout resource identifier of a layout file that defines the views 630dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * for this list item. Unless you override them later, this will 640dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * define both the item views and the drop down views. 650dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param c The cursor from which to get the data. 660dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param autoRequery If true the adapter will call requery() on the 670dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * cursor whenever it changes so the most recent 680dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * data is always displayed. 690dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose */ 700dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose public void __constructor__(Context context, int layout, Cursor c, boolean autoRequery) { 710dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose super.__constructor__(context, c, autoRequery); 720dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose mLayout = mDropDownLayout = layout; 730dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 740dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose } 750dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 760dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose /** 770dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * Inflates view(s) from the specified XML file. 780dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 790dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @see android.widget.CursorAdapter#newView(android.content.Context, 800dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * android.database.Cursor, ViewGroup) 810dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose */ 820dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose @Implementation 830dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose public View newView(Context context, Cursor cursor, ViewGroup parent) { 840dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose return mInflater.inflate(mLayout, parent, false); 850dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose } 860dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 870dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose @Implementation 880dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose public View newDropDownView(Context context, Cursor cursor, ViewGroup parent) { 890dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose return mInflater.inflate(mDropDownLayout, parent, false); 900dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose } 910dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 920dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose /** 930dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * <p>Sets the layout resource of the item views.</p> 940dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 950dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param layout the layout resources used to create item views 960dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose */ 970dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose @Implementation 980dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose public void setViewResource(int layout) { 990dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose mLayout = layout; 1000dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose } 1010dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose 1020dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose /** 1030dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * <p>Sets the layout resource of the drop down views.</p> 1040dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * 1050dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose * @param dropDownLayout the layout resources used to create drop down views 1060dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose */ 1070dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose @Implementation 1080dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose public void setDropDownViewResource(int dropDownLayout) { 1090dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose mDropDownLayout = dropDownLayout; 1100dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose } 1110dabe713bf2d78df246d9cff18ed11363491a2acAdam Cohen-Rose}