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