19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 171d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenpackage android.util; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.Gravity; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewGroup; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.AbsListView; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.Button; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.LinearLayout; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.TextView; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reusable methods for creating more complex list items. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ListItemFactory { 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a view with a button at the top and bottom, with filler in between. 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The filler is sized to take up any space left over within desiredHeight. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param position The position within the list. 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The context. 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param desiredHeight The desired height of the entire view. 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The created view. 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View twoButtonsSeparatedByFiller(int position, Context context, int desiredHeight) { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (desiredHeight < 90) { 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalArgumentException("need at least 90 pixels of height " + 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "to create the two buttons and leave 10 pixels for the filler"); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final LinearLayout ll = new LinearLayout(context); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.setOrientation(LinearLayout.VERTICAL); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final LinearLayout.LayoutParams buttonLp = 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LinearLayout.LayoutParams( 53980a938c1c9a6a5791a8240e5a1e6638ab28dc77Romain Guy ViewGroup.LayoutParams.MATCH_PARENT, 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 50); 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Button topButton = new Button(context); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project topButton.setLayoutParams( 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buttonLp); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project topButton.setText("top (position " + position + ")"); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(topButton); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final TextView middleFiller = new TextView(context); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project middleFiller.setLayoutParams(new LinearLayout.LayoutParams( 64980a938c1c9a6a5791a8240e5a1e6638ab28dc77Romain Guy ViewGroup.LayoutParams.MATCH_PARENT, 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project desiredHeight - 100)); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project middleFiller.setText("filler"); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(middleFiller); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Button bottomButton = new Button(context); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bottomButton.setLayoutParams(buttonLp); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bottomButton.setText("bottom (position " + position + ")"); 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(bottomButton); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.setTag("twoButtons"); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ll; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public enum Slot { 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Left, 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Middle, 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Right 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a horizontal linear layout divided into thirds (with some margins 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * separating the thirds), filled with buttons into some slots. 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The context. 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param desiredHeight The height of the LL. 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param slots Which slots to fill with buttons. 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The linear layout. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View horizontalButtonSlots(Context context, int desiredHeight, Slot... slots) { 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final LinearLayout ll = new LinearLayout(context); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.setOrientation(LinearLayout.HORIZONTAL); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final LinearLayout.LayoutParams lp 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new LinearLayout.LayoutParams(0, desiredHeight); 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project lp.setMargins(10, 0, 10, 0); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project lp.weight = 0.33f; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean left = false; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean middle = false; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean right = false; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (Slot slot : slots) { 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (slot) { 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Left: 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project left = true; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Middle: 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project middle = true; 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Right: 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project right = true; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (left) { 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Button button = new Button(context); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project button.setText("left"); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(button, lp); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(new View(context), lp); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (middle) { 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Button button = new Button(context); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project button.setText("center"); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(button, lp); 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(new View(context), lp); 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (right) { 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Button button = new Button(context); 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project button.setText("right"); 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(button, lp); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(new View(context), lp); 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ll; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a button ready to be a list item. 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param position The position within the list. 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The context. 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text of the button 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param desiredHeight The desired height of the button 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The created view. 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View button(int position, Context context, String text, int desiredHeight) { 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextView result = new Button(context); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setHeight(desiredHeight); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setText(text); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final ViewGroup.LayoutParams lp = new AbsListView.LayoutParams( 160980a938c1c9a6a5791a8240e5a1e6638ab28dc77Romain Guy ViewGroup.LayoutParams.MATCH_PARENT, 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup.LayoutParams.WRAP_CONTENT); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setLayoutParams(lp); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setId(position); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setTag("button"); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Convert an existing button view to display the data at a new position. 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param convertView Non-null Button created by {@link #button} 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text of the button 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param position The position withion the list 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The converted view 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View convertButton(View convertView, String text, int position) { 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (((String) convertView.getTag()).equals("button")) { 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ((Button) convertView).setText(text); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertView.setId(position); 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return convertView; 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a text view ready to be a list item. 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param position The position within the list. 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The context. 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param desiredHeight The desired height of the text view 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The created view. 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View text(int position, Context context, String text, int desiredHeight) { 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextView result = new TextView(context); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setHeight(desiredHeight); 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setText(text); 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final ViewGroup.LayoutParams lp = new AbsListView.LayoutParams( 200980a938c1c9a6a5791a8240e5a1e6638ab28dc77Romain Guy ViewGroup.LayoutParams.MATCH_PARENT, 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup.LayoutParams.WRAP_CONTENT); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setLayoutParams(lp); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setId(position); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result.setTag("text"); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Convert an existing text view to display the data at a new position. 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param convertView Non-null TextView created by {@link #text} 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param position The position withion the list 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The converted view 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View convertText(View convertView, String text, int position) { 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if(convertView.getTag() != null && ((String) convertView.getTag()).equals("text")) { 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ((TextView) convertView).setText(text); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertView.setId(position); 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return convertView; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a text view ready to be a list item. 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param position The position within the list. 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The context. 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text of the button 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param desiredHeight The desired height of the button 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The created view. 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View doubleText(int position, Context context, String text, int desiredHeight) { 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final LinearLayout ll = new LinearLayout(context); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.setOrientation(LinearLayout.HORIZONTAL); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final AbsListView.LayoutParams lp = 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AbsListView.LayoutParams( 242980a938c1c9a6a5791a8240e5a1e6638ab28dc77Romain Guy ViewGroup.LayoutParams.MATCH_PARENT, 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project desiredHeight); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.setLayoutParams(lp); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.setId(position); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextView t1 = new TextView(context); 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t1.setHeight(desiredHeight); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t1.setText(text); 250aac0d4ed026d1cfbcf3fa81c6e4eb96f4347ca17Fabrice Di Meglio t1.setGravity(Gravity.START | Gravity.CENTER_VERTICAL); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final ViewGroup.LayoutParams lp1 = new LinearLayout.LayoutParams( 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 0, 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f); 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(t1, lp1); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextView t2 = new TextView(context); 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t2.setHeight(desiredHeight); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t2.setText(text); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t2.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL); 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final ViewGroup.LayoutParams lp2 = new LinearLayout.LayoutParams( 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 0, 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup.LayoutParams.WRAP_CONTENT, 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1.0f); 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.addView(t2, lp2); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ll.setTag("double"); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ll; 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Convert an existing button view to display the data at a new position. 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param convertView Non-null view created by {@link #doubleText} 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text of the button 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param position The position withion the list 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The converted view 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static View convertDoubleText(View convertView, String text, int position) { 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (((String) convertView.getTag()).equals("double")) { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextView t1 = (TextView) ((LinearLayout) convertView).getChildAt(0); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextView t2 = (TextView) ((LinearLayout) convertView).getChildAt(1); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t1.setText(text); 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t2.setText(text); 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertView.setId(position); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return convertView; 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 292