1c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood/* 28ab8b411b81e4581060a31a97a0cb204a803b2e5Mike Lockwood * Copyright (C) 2008 The Android Open Source Project 3c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * 4c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * use this file except in compliance with the License. You may obtain a copy of 6c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * the License at 7c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * 8c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * 10c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Unless required by applicable law or agreed to in writing, software 11c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * License for the specific language governing permissions and limitations under 14c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * the License. 15c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood */ 16191d898468d2f4910a684f429bec518320843744Mike Lockwoodpackage com.android.locationtracker.data; 17c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 18c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.app.ListActivity; 19c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.content.Context; 20c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.database.Cursor; 21c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.view.View; 22c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.widget.ResourceCursorAdapter; 23c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.widget.TextView; 24c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 25191d898468d2f4910a684f429bec518320843744Mike Lockwoodimport com.android.locationtracker.R; 26c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 27c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood/** 28c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Used to bind Tracker data to a list view UI 29c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood */ 30c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodpublic class TrackerListHelper extends TrackerDataHelper { 31c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 32c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood private ListActivity mActivity; 33c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 34c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood // sort entries by most recent first 35c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood private static final String SORT_ORDER = TrackerEntry.ID_COL + " DESC"; 36c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 37c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood public TrackerListHelper(ListActivity activity) { 38c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood super(activity, TrackerDataHelper.CSV_FORMATTER); 39c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood mActivity = activity; 40c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood } 41c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 42c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood /** 43c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Helper method for binding the list activities UI to the tracker data 44c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Tracker data will be sorted in most-recent first order 45c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Will enable automatic UI changes as tracker data changes 46c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * 47c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * @param layout - layout to populate data 48c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood */ 49c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood public void bindListUI(int layout) { 50c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood Cursor cursor = mActivity.managedQuery(TrackerProvider.CONTENT_URI, 51c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood TrackerEntry.ATTRIBUTES, null, null, SORT_ORDER); 52c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood // Used to map tracker entries from the database to views 53c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood TrackerAdapter adapter = new TrackerAdapter(mActivity, layout, cursor); 54c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood mActivity.setListAdapter(adapter); 55c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood cursor.setNotificationUri(mActivity.getContentResolver(), 56c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood TrackerProvider.CONTENT_URI); 57c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 58c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood } 59c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 60c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood private class TrackerAdapter extends ResourceCursorAdapter { 61c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 62c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood public TrackerAdapter(Context context, int layout, Cursor c) { 63c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood super(context, layout, c); 64c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood } 65c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood 66c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood @Override 67c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood public void bindView(View view, Context context, Cursor cursor) { 68c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood final TextView v = (TextView) view 69c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood .findViewById(R.id.entrylist_item); 70c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood String rowText = mFormatter.getOutput(TrackerEntry 71c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood .createEntry(cursor)); 72c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood v.setText(rowText); 73c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood } 74c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood } 75c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood} 76