12aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton/*
22aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Copyright (C) 2010 Google Inc.
32aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
42aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License");
52aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * you may not use this file except in compliance with the License.
62aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * You may obtain a copy of the License at
72aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
8eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton *	    http://www.apache.org/licenses/LICENSE-2.0
92aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
102aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Unless required by applicable law or agreed to in writing, software
112aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS,
122aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * See the License for the specific language governing permissions and
142aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * limitations under the License
152aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton */
162aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
179b694a3b8f0339356c304ae078f63ae91df42226Jeff Hamiltonpackage com.android.loaderapp;
182aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
193d88981d9e39b077d9850825480ea8fd92e02296Jeff Hamiltonimport com.android.loaderapp.R;
203d88981d9e39b077d9850825480ea8fd92e02296Jeff Hamiltonimport com.android.loaderapp.model.ContactsListLoader;
212aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
222aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.content.Context;
232aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.database.Cursor;
242aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.view.LayoutInflater;
252aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.view.View;
262aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.view.ViewGroup;
272aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.widget.CursorAdapter;
282aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.widget.TextView;
292aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
30eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamiltonpublic class CursorFactoryListAdapter extends CursorAdapter {
31eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    ViewFactory mViewFactory;
32bc6f8fde3cfe4098c2c51a91f4b90522813c3f2bJeff Hamilton
33eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    public interface ViewFactory {
342aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        public View newView(Context context, ViewGroup parent);
352aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        public void bindView(View view, Context context, Cursor cursor);
362aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
372aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
382aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    /**
392aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     * A simple view factory that inflates the views from XML and puts the display
402aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     * name in @id/name.
412aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton     */
42eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    public static class ResourceViewFactory implements ViewFactory {
432aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        private int mResId;
442aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
45bc6f8fde3cfe4098c2c51a91f4b90522813c3f2bJeff Hamilton        public ResourceViewFactory(int resId) {
462aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            mResId = resId;
472aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
482aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
492aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        public View newView(Context context, ViewGroup parent) {
502aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            LayoutInflater inflater = (LayoutInflater) context.getSystemService(
512aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    Context.LAYOUT_INFLATER_SERVICE);
522aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            return inflater.inflate(mResId, parent, false);
532aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
542aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
552aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        public void bindView(View view, Context context, Cursor cursor) {
562aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            TextView name = (TextView) view.findViewById(R.id.name);
573d88981d9e39b077d9850825480ea8fd92e02296Jeff Hamilton            name.setText(cursor.getString(ContactsListLoader.COLUMN_NAME));
582aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
592aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
602aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
61eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    public CursorFactoryListAdapter(Context context, ViewFactory factory) {
62eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton        super(context, null, /* disable content observers for the cursor */0);
63eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton        mViewFactory = factory;
64eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    }
652aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
66eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    @Override
67eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    public View newView(Context context, Cursor cursor, ViewGroup parent) {
68eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton        View view = mViewFactory.newView(context, parent);
69eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton        mViewFactory.bindView(view, context, cursor);
70eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton        return view;
71eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    }
72eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton
73eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    @Override
74eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton    public void bindView(View view, Context context, Cursor cursor) {
75eda61bd20eaf7b1f627bc44962709bf8f1b09628Jeff Hamilton        mViewFactory.bindView(view, context, cursor);
762aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
772aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton}
78