Home | History | Annotate | Download | only in development
      1 /* //device/apps/Notes/NotesList.java
      2 **
      3 ** Copyright 2006, The Android Open Source Project
      4 **
      5 ** Licensed under the Apache License, Version 2.0 (the "License");
      6 ** you may not use this file except in compliance with the License.
      7 ** You may obtain a copy of the License at
      8 **
      9 **     http://www.apache.org/licenses/LICENSE-2.0
     10 **
     11 ** Unless required by applicable law or agreed to in writing, software
     12 ** distributed under the License is distributed on an "AS IS" BASIS,
     13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 ** See the License for the specific language governing permissions and
     15 ** limitations under the License.
     16 */
     17 package com.android.development;
     18 
     19 import android.app.ListActivity;
     20 import android.content.Intent;
     21 import android.database.Cursor;
     22 import android.net.Uri;
     23 import android.os.Bundle;
     24 import android.view.Menu;
     25 import android.view.MenuItem;
     26 import android.view.View;
     27 import android.widget.ListView;
     28 import android.widget.SimpleCursorAdapter;
     29 
     30 import java.util.ArrayList;
     31 
     32 public class DataList extends ListActivity
     33 {
     34     public void onCreate(Bundle icicle)
     35     {
     36         super.onCreate(icicle);
     37 
     38         Intent intent = getIntent();
     39 
     40         mCursor = getContentResolver().query(intent.getData(), null, null, null, null);
     41         mDisplay = intent.getStringExtra("display");
     42         if (mDisplay == null) {
     43             mDisplay = "_id";
     44         }
     45 
     46         if (mCursor != null) {
     47             setListAdapter(new SimpleCursorAdapter(
     48                     this,
     49                     R.layout.url_list,
     50                     mCursor,
     51                     new String[] {mDisplay},
     52                     new int[] {android.R.id.text1}));
     53         }
     54     }
     55 
     56     public void onStop()
     57     {
     58         super.onStop();
     59 
     60         if (mCursor != null) {
     61             mCursor.deactivate();
     62         }
     63     }
     64 
     65     public void onResume()
     66     {
     67         super.onResume();
     68 
     69         if (mCursor != null) {
     70             mCursor.requery();
     71         }
     72 
     73         setTitle("Showing " + mDisplay);
     74     }
     75 
     76     public boolean onCreateOptionsMenu(Menu menu)
     77     {
     78         super.onCreateOptionsMenu(menu);
     79         menu.add(0, 0, 0, "Requery").setOnMenuItemClickListener(mRequery);
     80         return true;
     81     }
     82 
     83     protected void onListItemClick(ListView l, View v, int position, long id)
     84     {
     85         mCursor.moveToPosition(position);
     86 
     87         ArrayList<ColumnData> data = new ArrayList<ColumnData>();
     88 
     89         String[] columnNames = mCursor.getColumnNames();
     90         for (int i=0; i<columnNames.length; i++) {
     91             String str = mCursor.getString(i);
     92             ColumnData cd = new ColumnData(columnNames[i], str);
     93             data.add(cd);
     94         }
     95 
     96 
     97         Uri uri = null;
     98         int idCol = mCursor.getColumnIndex("_id");
     99         if (idCol >= 0) {
    100             uri = Uri.withAppendedPath(getIntent().getData(), mCursor.getString(idCol));
    101         }
    102         Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    103         intent.setClass(this, Details.class);
    104 
    105         intent.putExtra("data", data);
    106         int displayColumn = mCursor.getColumnIndex(mDisplay);
    107         if (displayColumn >= 0) {
    108             intent.putExtra("title",
    109                                 ((ColumnData)data.get(displayColumn)).value);
    110         }
    111 
    112         startActivity(intent);
    113     }
    114 
    115     MenuItem.OnMenuItemClickListener mRequery = new MenuItem.OnMenuItemClickListener() {
    116         public boolean onMenuItemClick(MenuItem item) {
    117             // Should just do requery on cursor, but
    118             // doesn't work right now.  So do this instead.
    119             mCursor.requery();
    120             if (mCursor != null) {
    121                 setListAdapter(new SimpleCursorAdapter(
    122                         DataList.this,
    123                         R.layout.url_list,
    124                         mCursor,
    125                         new String[] {mDisplay},
    126                         new int[] {android.R.id.text1}));
    127             }
    128             return true;
    129         }
    130     };
    131 
    132     private String mDisplay;
    133     private Cursor mCursor;
    134 }
    135