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}