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