Mega Code Archive

 
Categories / Android / UI
 

A list view example where the data comes from a custom ListAdapter

/*  * Copyright (C) 2007 The Android Open Source Project  *  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */ package com.example.android.apis.view; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; /**  * A list view example where the   * data comes from a custom  * ListAdapter  */ public class List6 extends ListActivity  {          @Override     public void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);                  // Use our own list adapter         setListAdapter(new SpeechListAdapter(this));     }                   @Override     protected void onListItemClick(ListView l, View v, int position, long id)      {            ((SpeechListAdapter)getListAdapter()).toggle(position);     }          /**      * A sample ListAdapter that presents content      * from arrays of speeches and text.      *      */     private class SpeechListAdapter extends BaseAdapter {         public SpeechListAdapter(Context context)         {             mContext = context;         }                  /**          * The number of items in the list is determined by the number of speeches          * in our array.          *           * @see android.widget.ListAdapter#getCount()          */         public int getCount() {             return mTitles.length;         }         /**          * Since the data comes from an array, just returning          * the index is sufficent to get at the data. If we          * were using a more complex data structure, we          * would return whatever object represents one           * row in the list.          *           * @see android.widget.ListAdapter#getItem(int)          */         public Object getItem(int position) {             return position;         }         /**          * Use the array index as a unique id.          * @see android.widget.ListAdapter#getItemId(int)          */         public long getItemId(int position) {             return position;         }         /**          * Make a SpeechView to hold each row.          * @see android.widget.ListAdapter#getView(int, android.view.View, android.view.ViewGroup)          */         public View getView(int position, View convertView, ViewGroup parent) {             SpeechView sv;             if (convertView == null) {                 sv = new SpeechView(mContext, mTitles[position], mDialogue[position], mExpanded[position]);             } else {                 sv = (SpeechView)convertView;                 sv.setTitle(mTitles[position]);                 sv.setDialogue(mDialogue[position]);                 sv.setExpanded(mExpanded[position]);             }                          return sv;         }         public void toggle(int position) {             mExpanded[position] = !mExpanded[position];             notifyDataSetChanged();         }                  /**          * Remember our context so we can use it when constructing views.          */         private Context mContext;                  /**          * Our data, part 1.          */         private String[] mTitles =          {                 "Henry IV (1)",                    "Henry V",                 "Henry VIII",                        "Richard II",                 "Richard III",                 "Merchant of Venice",                   "Othello",                 "King Lear"         };                  /**          * Our data, part 2.          */         private String[] mDialogue =          {                 "So shaken as we are, so wan with care," +                 "Find we a time for frighted peace to pant," +                 "And breathe short-winded accents of new broils" +                 "To be commenced in strands afar remote." +                 "No more the thirsty entrance of this soil" +                 "Shall daub her lips with her own children's blood;" +                 "Nor more shall trenching war channel her fields," +                 "Nor bruise her flowerets with the armed hoofs" +                 "Of hostile paces: those opposed eyes," +                 "Which, like the meteors of a troubled heaven," +                 "All of one nature, of one substance bred," +                 "Did lately meet in the intestine shock" +                 "And furious close of civil butchery" +                 "Shall now, in mutual well-beseeming ranks," +                 "March all one way and be no more opposed" +                 "Against acquaintance, kindred and allies:" +                 "The edge of war, like an ill-sheathed knife," +                 "No more shall cut his master. Therefore, friends," +                 "As far as to the sepulchre of Christ," +                 "Whose soldier now, under whose blessed cross" +                 "We are impressed and engaged to fight," +                 "Forthwith a power of English shall we levy;" +                 "Whose arms were moulded in their mothers' womb" +                 "To chase these pagans in those holy fields" +                 "Over whose acres walk'd those blessed feet" +                 "Which fourteen hundred years ago were nail'd" +                 "For our advantage on the bitter cross." +                 "But this our purpose now is twelve month old," +                 "And bootless 'tis to tell you we will go:" +                 "Therefore we meet not now. Then let me hear" +                 "Of you, my gentle cousin Westmoreland," +                 "What yesternight our council did decree" +                 "In forwarding this dear expedience.",                                  "Hear him but reason in divinity," +                  "And all-admiring with an inward wish" +                  "You would desire the king were made a prelate:" +                  "Hear him debate of commonwealth affairs," +                  "You would say it hath been all in all his study:" +                  "List his discourse of war, and you shall hear" +                  "A fearful battle render'd you in music:" +                  "Turn him to any cause of policy," +                  "The Gordian knot of it he will unloose," +                  "Familiar as his garter: that, when he speaks," +                  "The air, a charter'd libertine, is still," +                  "And the mute wonder lurketh in men's ears," +                  "To steal his sweet and honey'd sentences;" +                  "So that the art and practic part of life" +                  "Must be the mistress to this theoric:" +                  "Which is a wonder how his grace should glean it," +                  "Since his addiction was to courses vain," +                  "His companies unletter'd, rude and shallow," +                  "His hours fill'd up with riots, banquets, sports," +                  "And never noted in him any study," +                  "Any retirement, any sequestration" +                  "From open haunts and popularity.",                 "I come no more to make you laugh: things now," +                 "That bear a weighty and a serious brow," +                 "Sad, high, and working, full of state and woe," +                 "Such noble scenes as draw the eye to flow," +                 "We now present. Those that can pity, here" +                 "May, if they think it well, let fall a tear;" +                 "The subject will deserve it. Such as give" +                 "Their money out of hope they may believe," +                 "May here find truth too. Those that come to see" +                 "Only a show or two, and so agree" +                 "The play may pass, if they be still and willing," +                 "I'll undertake may see away their shilling" +                 "Richly in two short hours. Only they" +                 "That come to hear a merry bawdy play," +                 "A noise of targets, or to see a fellow" +                 "In a long motley coat guarded with yellow," +                 "Will be deceived; for, gentle hearers, know," +                 "To rank our chosen truth with such a show" +                 "As fool and fight is, beside forfeiting" +                 "Our own brains, and the opinion that we bring," +                 "To make that only true we now intend," +                 "Will leave us never an understanding friend." +                 "Therefore, for goodness' sake, and as you are known" +                 "The first and happiest hearers of the town," +                 "Be sad, as we would make ye: think ye see" +                 "The very persons of our noble story" +                 "As they were living; think you see them great," +                 "And follow'd with the general throng and sweat" +                 "Of thousand friends; then in a moment, see" +                 "How soon this mightiness meets misery:" +                 "And, if you can be merry then, I'll say" +                 "A man may weep upon his wedding-day.",                                  "First, heaven be the record to my speech!" +                  "In the devotion of a subject's love," +                  "Tendering the precious safety of my prince," +                  "And free from other misbegotten hate," +                  "Come I appellant to this princely presence." +                  "Now, Thomas Mowbray, do I turn to thee," +                  "And mark my greeting well; for what I speak" +                  "My body shall make good upon this earth," +                  "Or my divine soul answer it in heaven." +                  "Thou art a traitor and a miscreant," +                  "Too good to be so and too bad to live," +                  "Since the more fair and crystal is the sky," +                  "The uglier seem the clouds that in it fly." +                  "Once more, the more to aggravate the note," +                  "With a foul traitor's name stuff I thy throat;" +                  "And wish, so please my sovereign, ere I move," +                  "What my tongue speaks my right drawn sword may prove.",                                  "Now is the winter of our discontent" +                  "Made glorious summer by this sun of York;" +                  "And all the clouds that lour'd upon our house" +                  "In the deep bosom of the ocean buried." +                  "Now are our brows bound with victorious wreaths;" +                  "Our bruised arms hung up for monuments;" +                  "Our stern alarums changed to merry meetings," +                  "Our dreadful marches to delightful measures." +                  "Grim-visaged war hath smooth'd his wrinkled front;" +                  "And now, instead of mounting barded steeds" +                  "To fright the souls of fearful adversaries," +                  "He capers nimbly in a lady's chamber" +                  "To the lascivious pleasing of a lute." +                  "But I, that am not shaped for sportive tricks," +                  "Nor made to court an amorous looking-glass;" +                  "I, that am rudely stamp'd, and want love's majesty" +                  "To strut before a wanton ambling nymph;" +                  "I, that am curtail'd of this fair proportion," +                  "Cheated of feature by dissembling nature," +                  "Deformed, unfinish'd, sent before my time" +                  "Into this breathing world, scarce half made up," +                  "And that so lamely and unfashionable" +                  "That dogs bark at me as I halt by them;" +                  "Why, I, in this weak piping time of peace," +                  "Have no delight to pass away the time," +                  "Unless to spy my shadow in the sun" +                  "And descant on mine own deformity:" +                  "And therefore, since I cannot prove a lover," +                  "To entertain these fair well-spoken days," +                  "I am determined to prove a villain" +                  "And hate the idle pleasures of these days." +                  "Plots have I laid, inductions dangerous," +                  "By drunken prophecies, libels and dreams," +                  "To set my brother Clarence and the king" +                  "In deadly hate the one against the other:" +                  "And if King Edward be as true and just" +                  "As I am subtle, false and treacherous," +                  "This day should Clarence closely be mew'd up," +                  "About a prophecy, which says that 'G'" +                  "Of Edward's heirs the murderer shall be." +                  "Dive, thoughts, down to my soul: here" +                  "Clarence comes.",                                  "To bait fish withal: if it will feed nothing else," +                  "it will feed my revenge. He hath disgraced me, and" +                  "hindered me half a million; laughed at my losses," +                  "mocked at my gains, scorned my nation, thwarted my" +                  "bargains, cooled my friends, heated mine" +                  "enemies; and what's his reason? I am a Jew. Hath" +                  "not a Jew eyes? hath not a Jew hands, organs," +                  "dimensions, senses, affections, passions? fed with" +                  "the same food, hurt with the same weapons, subject" +                  "to the same diseases, healed by the same means," +                  "warmed and cooled by the same winter and summer, as" +                  "a Christian is? If you prick us, do we not bleed?" +                  "if you tickle us, do we not laugh? if you poison" +                  "us, do we not die? and if you wrong us, shall we not" +                  "revenge? If we are like you in the rest, we will" +                  "resemble you in that. If a Jew wrong a Christian," +                  "what is his humility? Revenge. If a Christian" +                  "wrong a Jew, what should his sufferance be by" +                  "Christian example? Why, revenge. The villany you" +                  "teach me, I will execute, and it shall go hard but I" +                  "will better the instruction.",                                  "Virtue! a fig! 'tis in ourselves that we are thus" +                  "or thus. Our bodies are our gardens, to the which" +                  "our wills are gardeners: so that if we will plant" +                  "nettles, or sow lettuce, set hyssop and weed up" +                  "thyme, supply it with one gender of herbs, or" +                  "distract it with many, either to have it sterile" +                  "with idleness, or manured with industry, why, the" +                  "power and corrigible authority of this lies in our" +                  "wills. If the balance of our lives had not one" +                  "scale of reason to poise another of sensuality, the" +                  "blood and baseness of our natures would conduct us" +                  "to most preposterous conclusions: but we have" +                  "reason to cool our raging motions, our carnal" +                  "stings, our unbitted lusts, whereof I take this that" +                  "you call love to be a sect or scion.",                 "Blow, winds, and crack your cheeks! rage! blow!" +                  "You cataracts and hurricanoes, spout" +                  "Till you have drench'd our steeples, drown'd the cocks!" +                  "You sulphurous and thought-executing fires," +                  "Vaunt-couriers to oak-cleaving thunderbolts," +                  "Singe my white head! And thou, all-shaking thunder," +                  "Smite flat the thick rotundity o' the world!" +                  "Crack nature's moulds, an germens spill at once," +                  "That make ingrateful man!"         };                  /**          * Our data, part 3.          */         private boolean[] mExpanded =          {                 false,                 false,                 false,                 false,                 false,                 false,                 false,                 false            };     }          /**      * We will use a SpeechView to display each speech. It's just a LinearLayout      * with two text fields.      *      */     private class SpeechView extends LinearLayout {         public SpeechView(Context context, String title, String dialogue, boolean expanded) {             super(context);                          this.setOrientation(VERTICAL);                          // Here we build the child views in code. They could also have             // been specified in an XML file.                          mTitle = new TextView(context);             mTitle.setText(title);             addView(mTitle, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));                          mDialogue = new TextView(context);             mDialogue.setText(dialogue);             addView(mDialogue, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));                          mDialogue.setVisibility(expanded ? VISIBLE : GONE);         }                  /**          * Convenience method to set the title of a SpeechView          */         public void setTitle(String title) {             mTitle.setText(title);         }                  /**          * Convenience method to set the dialogue of a SpeechView          */         public void setDialogue(String words) {             mDialogue.setText(words);         }                  /**          * Convenience method to expand or hide the dialogue          */         public void setExpanded(boolean expanded) {             mDialogue.setVisibility(expanded ? VISIBLE : GONE);         }                  private TextView mTitle;         private TextView mDialogue;     } }