152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/* 252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * you may not use this file except in compliance with the License. 652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * You may obtain a copy of the License at 752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 1052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * See the License for the specific language governing permissions and 1452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * limitations under the License. 1552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 1652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 1752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpackage com.example.android.apis.view; 1852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 19165ca04d0e05db466442be38110d4cc16e7f7618Dianne Hackbornimport com.example.android.apis.Shakespeare; 20165ca04d0e05db466442be38110d4cc16e7f7618Dianne Hackborn 2152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.app.ListActivity; 2252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.Context; 2352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.os.Bundle; 2452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.View; 2552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.ViewGroup; 2652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.BaseAdapter; 2752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.LinearLayout; 2852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.TextView; 2952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 3052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 3152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/** 3252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * A list view example where the data comes from a custom ListAdapter 3352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 3452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpublic class List4 extends ListActivity { 3552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 3652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project @Override 3752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public void onCreate(Bundle savedInstanceState) { 3852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project super.onCreate(savedInstanceState); 3952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 4052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Use our own list adapter 4152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project setListAdapter(new SpeechListAdapter(this)); 4252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 4352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 4452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 4552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 4652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * A sample ListAdapter that presents content from arrays of speeches and 4752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * text. 4852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 4952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 5052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project private class SpeechListAdapter extends BaseAdapter { 5152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public SpeechListAdapter(Context context) { 5252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mContext = context; 5352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 5452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 5552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 5652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * The number of items in the list is determined by the number of speeches 5752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * in our array. 5852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 5952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * @see android.widget.ListAdapter#getCount() 6052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 6152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public int getCount() { 62165ca04d0e05db466442be38110d4cc16e7f7618Dianne Hackborn return Shakespeare.TITLES.length; 6352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 6452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 6552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 6652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Since the data comes from an array, just returning the index is 6752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * sufficent to get at the data. If we were using a more complex data 6852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * structure, we would return whatever object represents one row in the 6952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * list. 7052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 7152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * @see android.widget.ListAdapter#getItem(int) 7252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 7352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public Object getItem(int position) { 7452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return position; 7552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 7652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 7752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 7852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Use the array index as a unique id. 7952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 8052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * @see android.widget.ListAdapter#getItemId(int) 8152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 8252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public long getItemId(int position) { 8352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return position; 8452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 8552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 8652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 8752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Make a SpeechView to hold each row. 8852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 8952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * @see android.widget.ListAdapter#getView(int, android.view.View, 9052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * android.view.ViewGroup) 9152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 9252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public View getView(int position, View convertView, ViewGroup parent) { 9352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project SpeechView sv; 9452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (convertView == null) { 95165ca04d0e05db466442be38110d4cc16e7f7618Dianne Hackborn sv = new SpeechView(mContext, Shakespeare.TITLES[position], 96165ca04d0e05db466442be38110d4cc16e7f7618Dianne Hackborn Shakespeare.DIALOGUE[position]); 9752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } else { 9852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project sv = (SpeechView) convertView; 99165ca04d0e05db466442be38110d4cc16e7f7618Dianne Hackborn sv.setTitle(Shakespeare.TITLES[position]); 100165ca04d0e05db466442be38110d4cc16e7f7618Dianne Hackborn sv.setDialogue(Shakespeare.DIALOGUE[position]); 10152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 10252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 10352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return sv; 10452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 10552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 10652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 10752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Remember our context so we can use it when constructing views. 10852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 10952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project private Context mContext; 11052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 11152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 11252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 11352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * We will use a SpeechView to display each speech. It's just a LinearLayout 11452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * with two text fields. 11552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 11652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 11752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project private class SpeechView extends LinearLayout { 11852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public SpeechView(Context context, String title, String words) { 11952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project super(context); 12052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 12152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project this.setOrientation(VERTICAL); 12252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 12352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Here we build the child views in code. They could also have 12452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // been specified in an XML file. 12552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 12652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mTitle = new TextView(context); 12752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mTitle.setText(title); 12852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project addView(mTitle, new LinearLayout.LayoutParams( 12974192eafec8408417114d77784cd35eda5df573cRomain Guy LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 13052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 13152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mDialogue = new TextView(context); 13252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mDialogue.setText(words); 13352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project addView(mDialogue, new LinearLayout.LayoutParams( 13474192eafec8408417114d77784cd35eda5df573cRomain Guy LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 13552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 13652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 13752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 13852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Convenience method to set the title of a SpeechView 13952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 14052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public void setTitle(String title) { 14152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mTitle.setText(title); 14252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 14352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 14452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /** 14552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Convenience method to set the dialogue of a SpeechView 14652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 14752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public void setDialogue(String words) { 14852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mDialogue.setText(words); 14952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 15052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 15152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project private TextView mTitle; 15252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project private TextView mDialogue; 15352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 15452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project} 155