[ATC.I] Generic implementation of a Footer for an Android ap

Basic Tutorials concerning: GUI, Views, Activites, XML, Layouts, Intents, ...

[ATC.I] Generic implementation of a Footer for an Android ap

Postby plusminus » Sat May 03, 2008 5:46 pm

[align=center]Generic implementation of a Footer for an Android application
Submitted by Manmath Ray as a part of the First Android Tutorial Contest.[/align]

What you learn: The basic idea behind this tutorial is to give a common way to add footer to Android application irrespective of Activity and view designed for a particular screen. .

:?: Problems/Questions: Write them right below...

Features:
  1. Defining a common footer for all screens
  2. Adding Footer to a List Activity
  3. Adding Footer to a Form


Difficulty: 2 of 5 :)

What it will look like:

[align=center]Image Image
See the footer :uarrow: remaining on all Activities.[/align]

Design:
A footer is a typical requirement for most of the Application. There may be footer in all type of screen or there may not be footer in some screens. So design should be in such a way that irrespective of screens we can add or remove the footer.

1. Footer view needs to be defined in separate xml file so that we can generate the footer view when we need for any of the screen.
2. The screen layout which requires the Footer needs to be defined inside the linear layout so that we can add the footer to the existing layout inside the Linear Layout. This additional External Linear Layout is used to wrap the Existing view and the footer view. (Why Linear Layout? This is a tested Result, no specific reason is known to me, if any one knows can explain?)
3. There should be common method which will return the Footer view with Layout defined on it. Each of the Activity can find the Linear Layout ID as discussed in step -2 in runtime and add the defined footer view inside it, We need to define the footer view in some java classes which can be accessible for any of the Activities.

Description with Example:
As shown in the screen shots, There are two screens one is Form another is Expandable list. The code below will show you how to add the footer in both the screens.

1. Defining footer View
[footer.xml]

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.  
  3.    android:orientation="horizontal"
  4.  
  5.    android:layout_width="wrap_content"
  6.  
  7.    android:layout_height="wrap_content"
  8.  
  9.    android:layout_gravity="center_horizontal"
  10.  
  11.   >
  12.  
  13.         <ImageView android:id="@+id/mchek"
  14.  
  15.                 android:layout_width="wrap_content"
  16.  
  17.                 android:layout_height="wrap_content"
  18.  
  19.                 android:src="@drawable/logo"
  20.  
  21.                 android:paddingRight="20px"
  22.  
  23.                 android:clickable="false"
  24.  
  25.             />
  26.  
  27.             <ImageView android:id="@+id/visa"
  28.  
  29.                 android:layout_width="wrap_content"
  30.  
  31.                 android:layout_height="wrap_content"
  32.  
  33.                 android:src="@drawable/visa"
  34.  
  35.                 android:clickable="false"
  36.  
  37.             />
  38.  
  39. </LinearLayout>
Parsed in 0.002 seconds, using GeSHi 1.0.8.4




2. Defining sample Form and List
[FormDesgin.xml]
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ticketId"
  2.  
  3. android:orientation="vertical"
  4.  
  5. android:layout_width="fill_parent"
  6.  
  7. android:layout_height="fill_parent"
  8.  
  9.  android:background="@drawable/lite_blue">
  10.  
  11. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  12.  
  13.         android:layout_width="fill_parent"
  14.  
  15.         android:layout_height="wrap_content"
  16.  
  17.         android:scrollbars="vertical"
  18.  
  19.         android:layout_weight="1.0"
  20.  
  21. >
  22.  
  23.          
  24.  
  25.         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  26.  
  27.     android:orientation="vertical"
  28.  
  29.             android:layout_width="fill_parent"
  30.  
  31.             android:layout_height="fill_parent"
  32.  
  33.          >
  34.  
  35.                 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  36.  
  37.                 android:orientation="vertical"
  38.  
  39.                 android:layout_width="fill_parent"
  40.  
  41.                 android:layout_height="wrap_content"
  42.  
  43.                 >
  44.  
  45.                         <TextView android:id="@+id/lableSrc"
  46.  
  47.                             android:layout_width="fill_parent"
  48.  
  49.                             android:layout_height="wrap_content"
  50.  
  51.                             android:layout_marginTop="8px"
  52.  
  53.                            
  54.  
  55.                             android:textSize="15px"
  56.  
  57.                             android:text="@string/LAB_SRC"
  58.  
  59.                             android:textColor="@color/black"/>
  60.  
  61.                         <Spinner android:id="@+id/spSrc"
  62.  
  63.                                 android:layout_width="fill_parent"
  64.  
  65.                         android:layout_height="40px"
  66.  
  67.                                 android:layout_marginTop="8px"
  68.  
  69.                                 android:layout_marginLeft="10px"
  70.  
  71.                                 android:layout_marginRight="5px"
  72.  
  73.                                 android:gravity="center_vertical"
  74.  
  75.                                android:textColor="@color/black"
  76.  
  77.                                 android:drawSelectorOnTop="true"
  78.  
  79.                             />
  80.  
  81.                           <requestFocus />
  82.  
  83.                     <TextView android:id="@+id/lableDest"
  84.  
  85.                             android:layout_width="fill_parent"
  86.  
  87.                             android:layout_height="wrap_content"
  88.  
  89.                             android:layout_marginTop="8px"
  90.  
  91.                             android:textSize="15px"
  92.  
  93.                             android:text="@string/LAB_DEST"
  94.  
  95.                             android:textColor="@color/black"/>
  96.  
  97.                     <Spinner android:id="@+id/spDest"
  98.  
  99.                         android:layout_width="fill_parent"
  100.  
  101.                         android:layout_height="40px"
  102.  
  103.                         android:layout_marginTop="8px"
  104.  
  105.                         android:layout_marginLeft="10px"
  106.  
  107.                         android:layout_marginRight="5px"
  108.  
  109.                         android:gravity="center_vertical"
  110.  
  111.                         android:textColor="@color/black"
  112.  
  113.                         android:drawSelectorOnTop="true"
  114.  
  115.                        
  116.  
  117.                     />
  118.  
  119.                  </LinearLayout>
  120.  
  121.                
  122.  
  123.                  <RelativeLayout android:orientation="vertical"
  124.  
  125.                         android:layout_width="fill_parent"
  126.  
  127.                 android:layout_height="wrap_content">
  128.  
  129.            
  130.  
  131.                    
  132.  
  133.                     <TextView android:id="@+id/lableTrain"
  134.  
  135.                             android:layout_width="wrap_content"
  136.  
  137.                             android:layout_height="wrap_content"
  138.  
  139.                             android:layout_marginTop="8px"
  140.  
  141.                                 android:textSize="15px"
  142.  
  143.                             android:text="@string/LAB_TRAIN_NO"
  144.  
  145.                             android:textColor="@color/black"/>
  146.  
  147.                          <EditText android:id="@+id/trainNo"
  148.  
  149.                         android:layout_width="fill_parent"
  150.  
  151.                         android:layout_height="35px"
  152.  
  153.                         android:layout_marginTop="8px"
  154.  
  155.                         android:layout_marginLeft="10px"
  156.  
  157.                         android:layout_marginRight="5px"
  158.  
  159.                         android:layout_below="@id/lableTrain"
  160.  
  161.                         android:textSize="16px"
  162.  
  163.                         android:textColor="@color/black"
  164.  
  165.                         android:inputMethod="@string/digit_input"
  166.  
  167.                         android:maxLength="4">
  168.  
  169.                      </EditText>
  170.  
  171.                         <TextView android:id="@+id/lableQty"
  172.  
  173.                             android:layout_width="fill_parent"
  174.  
  175.                             android:layout_height="wrap_content"
  176.  
  177.                             android:layout_marginTop="8px"
  178.  
  179.                             android:textSize="15px"
  180.  
  181.                             android:text="@string/LAB_TICK_QTY"
  182.  
  183.                              android:layout_below="@id/trainNo"
  184.  
  185.                             android:textColor="@color/black"/>
  186.  
  187.                            
  188.  
  189.                     <EditText android:id="@+id/Qty"
  190.  
  191.                         android:layout_width="fill_parent"
  192.  
  193.                         android:layout_height="40px"
  194.  
  195.                         android:layout_marginTop="8px"
  196.  
  197.                         android:layout_marginLeft="10px"
  198.  
  199.                         android:layout_marginRight="5px"
  200.  
  201.                         android:layout_below="@id/lableQty"
  202.  
  203.                         android:textSize="16px"
  204.  
  205.                         android:textColor="@color/black"
  206.  
  207.                         android:inputMethod="@string/digit_input"
  208.  
  209.                         android:maxLength="3">
  210.  
  211.                      </EditText>
  212.  
  213.                         <Button android:id="@+id/btnDate"
  214.  
  215.                         android:layout_marginTop="8px"
  216.  
  217.                     android:layout_width="wrap_content"
  218.  
  219.                     android:layout_height="wrap_content"
  220.  
  221.                     android:layout_marginLeft="10px"
  222.  
  223.                     android:layout_below="@id/Qty"
  224.  
  225.                     android:text="choose date"/>
  226.  
  227.             <TextView android:id="@+id/Date"
  228.  
  229.                             android:layout_width="fill_parent"
  230.  
  231.                             android:layout_height="wrap_content"
  232.  
  233.                                 android:textSize="15px"
  234.  
  235.                             android:text="MM/DD/YYYY"
  236.  
  237.                             android:layout_marginTop="8px"
  238.  
  239.                             android:layout_below="@id/Qty"
  240.  
  241.                             android:layout_toRight="@id/btnDate"
  242.  
  243.                             android:textColor="@color/black"
  244.  
  245.                             android:textStyle="bold"/>
  246.  
  247.                      
  248.  
  249.            </RelativeLayout>
  250.  
  251.            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linRad"
  252.  
  253.             android:orientation="vertical"
  254.  
  255.             android:layout_width="fill_parent"
  256.  
  257.             android:layout_height="fill_parent">
  258.  
  259.          <RadioGroup android:layout_width="fill_parent" android:id="@+id/group1"
  260.  
  261.                   android:layout_height="wrap_content"
  262.  
  263.                   android:orientation="horizontal"
  264.  
  265.                   android:paddingTop="10px"  
  266.  
  267.                   android:layout_marginLeft="10px">
  268.  
  269.                  <RadioButton android:checked="false"
  270.  
  271.                        android:text="Child" />
  272.  
  273.                  <RadioButton android:checked="false"
  274.  
  275.                         android:layout_marginLeft="10px"
  276.  
  277.                    android:text="Adult" />
  278.  
  279.                 </RadioGroup>
  280.  
  281.         </LinearLayout>
  282.  
  283.            
  284.  
  285.         </LinearLayout>
  286.  
  287. </ScrollView>
  288.  
  289. </LinearLayout>
Parsed in 0.042 seconds, using GeSHi 1.0.8.4


[ListDesgin.xml]
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listId"
  4.  
  5.      android:layout_width="fill_parent"
  6.  
  7.      android:layout_height="fill_parent"
  8.  
  9.      android:orientation="vertical"
  10.  
  11.      android:background="@drawable/grey">
  12.  
  13.    
  14.  
  15.     <ExpandableListView android:id="@+id/android:list"
  16.  
  17.         android:layout_width="fill_parent"
  18.  
  19.         android:layout_height="wrap_content"
  20.  
  21.         android:layout_weight="1.0"
  22.  
  23.         android:selectAllOnFocus="true"/>
  24.  
  25.  </LinearLayout>
Parsed in 0.002 seconds, using GeSHi 1.0.8.4




The marked part on both the screen design are something related to adding footer and rest of the code is similar to designing a simple scrollable form. The points to be considered are…
1. Adding the External Linear Layout whose id is ticketId in case of Form and listId in case of Expandable List. This id can be used for adding the footer to it in runtime while creating the screen.
2. We need to scroll the window without including the footer and Footer will be added in runtime so it is required to specify some space for footer while designing the form or list. android:layout_weight="1.0" is used to specify the space for footer after scrolling space or the list view.
3. The highlighted point for the view after which footer will reside must have following properties.

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. android:layout_height="wrap_content"
  2.  
  3. android:layout_weight="1.0"
Parsed in 0.000 seconds, using GeSHi 1.0.8.4




3. Defining a method to get the footer view

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. public View  getFooterView(Activity ctx){
  2.  
  3.                                        
  4.  
  5. ViewInflate vif= (ViewInflate)ctx.getSystemService(Context.INFLATE_SERVICE);
  6.  
  7.         View fv=vif.inflate(R.layout.footer, null, null);
  8.  
  9.         LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams
  10.  
  11.                            (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  12.  
  13.         lp.gravity=0x01;
  14.  
  15.         fv.setClickable(false);
  16.  
  17.         fv.setSelected(false);
  18.  
  19.         fv.setLayoutParams(lp);
  20.  
  21.         return fv;
  22.  
  23. }
Parsed in 0.035 seconds, using GeSHi 1.0.8.4


This method needs to define in such a way that it can be accessible to All the Activities. This method is used to create a footer view with certain layout parameter and returns the footer view.

4. Adding Footer to Activities

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. LinearLayout lay = (LinearLayout)  indViewById(R.id.ticketId);
Parsed in 0.033 seconds, using GeSHi 1.0.8.4

or
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. LinearLayout lay = (LinearLayout)  indViewById(R.id.listId);
Parsed in 0.035 seconds, using GeSHi 1.0.8.4

then:
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. lay.addView(getFooterView(this));
Parsed in 0.036 seconds, using GeSHi 1.0.8.4


This is how footer is going to be added when an screen is created.

The Full Source:
res/layout/Form_Design.xml

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ticketId"
  2.  
  3. android:orientation="vertical"
  4.  
  5. android:layout_width="fill_parent"
  6.  
  7. android:layout_height="fill_parent"
  8.  
  9.  android:background="@drawable/lite_blue">
  10.  
  11. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  12.  
  13.         android:layout_width="fill_parent"
  14.  
  15.         android:layout_height="wrap_content"
  16.  
  17.         android:scrollbars="vertical"
  18.  
  19.         android:layout_weight="1.0"
  20.  
  21. >
  22.  
  23.          
  24.  
  25.         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  26.  
  27.     android:orientation="vertical"
  28.  
  29.             android:layout_width="fill_parent"
  30.  
  31.             android:layout_height="fill_parent"
  32.  
  33.          >
  34.  
  35.                 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  36.  
  37.                 android:orientation="vertical"
  38.  
  39.                 android:layout_width="fill_parent"
  40.  
  41.                 android:layout_height="wrap_content"
  42.  
  43.                 >
  44.  
  45.                         <TextView android:id="@+id/lableSrc"
  46.  
  47.                             android:layout_width="fill_parent"
  48.  
  49.                             android:layout_height="wrap_content"
  50.  
  51.                             android:layout_marginTop="8px"
  52.  
  53.                            
  54.  
  55.                             android:textSize="15px"
  56.  
  57.                             android:text="@string/LAB_SRC"
  58.  
  59.                             android:textColor="@color/black"/>
  60.  
  61.                         <Spinner android:id="@+id/spSrc"
  62.  
  63.                                 android:layout_width="fill_parent"
  64.  
  65.                         android:layout_height="40px"
  66.  
  67.                                 android:layout_marginTop="8px"
  68.  
  69.                                 android:layout_marginLeft="10px"
  70.  
  71.                                 android:layout_marginRight="5px"
  72.  
  73.                                 android:gravity="center_vertical"
  74.  
  75.                                android:textColor="@color/black"
  76.  
  77.                                 android:drawSelectorOnTop="true"
  78.  
  79.                             />
  80.  
  81.                           <requestFocus />
  82.  
  83.                     <TextView android:id="@+id/lableDest"
  84.  
  85.                             android:layout_width="fill_parent"
  86.  
  87.                             android:layout_height="wrap_content"
  88.  
  89.                             android:layout_marginTop="8px"
  90.  
  91.                             android:textSize="15px"
  92.  
  93.                             android:text="@string/LAB_DEST"
  94.  
  95.                             android:textColor="@color/black"/>
  96.  
  97.                     <Spinner android:id="@+id/spDest"
  98.  
  99.                         android:layout_width="fill_parent"
  100.  
  101.                         android:layout_height="40px"
  102.  
  103.                         android:layout_marginTop="8px"
  104.  
  105.                         android:layout_marginLeft="10px"
  106.  
  107.                         android:layout_marginRight="5px"
  108.  
  109.                         android:gravity="center_vertical"
  110.  
  111.                         android:textColor="@color/black"
  112.  
  113.                         android:drawSelectorOnTop="true"
  114.  
  115.                        
  116.  
  117.                     />
  118.  
  119.                  </LinearLayout>
  120.  
  121.                
  122.  
  123.                  <RelativeLayout android:orientation="vertical"
  124.  
  125.                         android:layout_width="fill_parent"
  126.  
  127.                 android:layout_height="wrap_content">
  128.  
  129.            
  130.  
  131.                    
  132.  
  133.                     <TextView android:id="@+id/lableTrain"
  134.  
  135.                             android:layout_width="wrap_content"
  136.  
  137.                             android:layout_height="wrap_content"
  138.  
  139.                             android:layout_marginTop="8px"
  140.  
  141.                                 android:textSize="15px"
  142.  
  143.                             android:text="@string/LAB_TRAIN_NO"
  144.  
  145.                             android:textColor="@color/black"/>
  146.  
  147.                          <EditText android:id="@+id/trainNo"
  148.  
  149.                         android:layout_width="fill_parent"
  150.  
  151.                         android:layout_height="35px"
  152.  
  153.                         android:layout_marginTop="8px"
  154.  
  155.                         android:layout_marginLeft="10px"
  156.  
  157.                         android:layout_marginRight="5px"
  158.  
  159.                         android:layout_below="@id/lableTrain"
  160.  
  161.                         android:textSize="16px"
  162.  
  163.                         android:textColor="@color/black"
  164.  
  165.                         android:inputMethod="@string/digit_input"
  166.  
  167.                         android:maxLength="4">
  168.  
  169.                      </EditText>
  170.  
  171.                         <TextView android:id="@+id/lableQty"
  172.  
  173.                             android:layout_width="fill_parent"
  174.  
  175.                             android:layout_height="wrap_content"
  176.  
  177.                             android:layout_marginTop="8px"
  178.  
  179.                             android:textSize="15px"
  180.  
  181.                             android:text="@string/LAB_TICK_QTY"
  182.  
  183.                              android:layout_below="@id/trainNo"
  184.  
  185.                             android:textColor="@color/black"/>
  186.  
  187.                            
  188.  
  189.                     <EditText android:id="@+id/Qty"
  190.  
  191.                         android:layout_width="fill_parent"
  192.  
  193.                         android:layout_height="40px"
  194.  
  195.                         android:layout_marginTop="8px"
  196.  
  197.                         android:layout_marginLeft="10px"
  198.  
  199.                         android:layout_marginRight="5px"
  200.  
  201.                         android:layout_below="@id/lableQty"
  202.  
  203.                         android:textSize="16px"
  204.  
  205.                         android:textColor="@color/black"
  206.  
  207.                         android:inputMethod="@string/digit_input"
  208.  
  209.                         android:maxLength="3">
  210.  
  211.                      </EditText>
  212.  
  213.                         <Button android:id="@+id/btnDate"
  214.  
  215.                         android:layout_marginTop="8px"
  216.  
  217.                     android:layout_width="wrap_content"
  218.  
  219.                     android:layout_height="wrap_content"
  220.  
  221.                     android:layout_marginLeft="10px"
  222.  
  223.                     android:layout_below="@id/Qty"
  224.  
  225.                     android:text="choose date"/>
  226.  
  227.             <TextView android:id="@+id/Date"
  228.  
  229.                             android:layout_width="fill_parent"
  230.  
  231.                             android:layout_height="wrap_content"
  232.  
  233.                                 android:textSize="15px"
  234.  
  235.                             android:text="MM/DD/YYYY"
  236.  
  237.                             android:layout_marginTop="8px"
  238.  
  239.                             android:layout_below="@id/Qty"
  240.  
  241.                             android:layout_toRight="@id/btnDate"
  242.  
  243.                             android:textColor="@color/black"
  244.  
  245.                             android:textStyle="bold"/>
  246.  
  247.                      
  248.  
  249.            </RelativeLayout>
  250.  
  251.            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linRad"
  252.  
  253.             android:orientation="vertical"
  254.  
  255.             android:layout_width="fill_parent"
  256.  
  257.             android:layout_height="fill_parent">
  258.  
  259.          <RadioGroup android:layout_width="fill_parent" android:id="@+id/group1"
  260.  
  261.                   android:layout_height="wrap_content"
  262.  
  263.                   android:orientation="horizontal"
  264.  
  265.                   android:paddingTop="10px"  
  266.  
  267.                   android:layout_marginLeft="10px">
  268.  
  269.                  <RadioButton android:checked="false"
  270.  
  271.                        android:text="Child" />
  272.  
  273.                  <RadioButton android:checked="false"
  274.  
  275.                         android:layout_marginLeft="10px"
  276.  
  277.                    android:text="Adult" />
  278.  
  279.                 </RadioGroup>
  280.  
  281.         </LinearLayout>
  282.  
  283.            
  284.  
  285.         </LinearLayout>
  286.  
  287. </ScrollView>
  288.  
  289. </LinearLayout>
Parsed in 0.020 seconds, using GeSHi 1.0.8.4


res/layout/footer.xml
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.                 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.  
  3.    android:orientation="horizontal"
  4.  
  5.    android:layout_width="wrap_content"
  6.  
  7.    android:layout_height="wrap_content"
  8.  
  9.    android:layout_gravity="center_horizontal"
  10.  
  11.   >
  12.  
  13.         <ImageView android:id="@+id/mchek"
  14.  
  15.                 android:layout_width="wrap_content"
  16.  
  17.                 android:layout_height="wrap_content"
  18.  
  19.                 android:src="@drawable/logo"
  20.  
  21.                 android:paddingRight="20px"
  22.  
  23.                 android:clickable="false"
  24.  
  25.             />
  26.  
  27.             <ImageView android:id="@+id/visa"
  28.  
  29.                 android:layout_width="wrap_content"
  30.  
  31.                 android:layout_height="wrap_content"
  32.  
  33.                 android:src="@drawable/visa"
  34.  
  35.                 android:clickable="false"
  36.  
  37.             />
  38.  
  39. </LinearLayout>
Parsed in 0.003 seconds, using GeSHi 1.0.8.4


TicketOrderForm.java

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. public class TicketOrderForm  extends Activity implements RadioGroup.OnCheckedChangeListener, View.OnClickListener {
  2.  
  3.         TextView mDateDisplay;
  4.  
  5.         String price [];
  6.  
  7.         private EditText et;
  8.  
  9.         protected static RadioGroup mRadioGroup;
  10.  
  11.          protected static int choice = -2;
  12.  
  13.          private String  strVal;
  14.  
  15.          // date and time
  16.  
  17.             private int mYear;
  18.  
  19.             private int mMonth;
  20.  
  21.             private int mDay;
  22.  
  23.         @Override
  24.  
  25.         protected void onCreate(Bundle icicle) {
  26.  
  27.                 super.onCreate(icicle);
  28.  
  29.                 setContentView(R.layout.Form_Design);
  30.  
  31.                 Bundle bndl=getIntent().getExtras();
  32.  
  33.                 ProcessRailway.biller=bndl.getCharSequence("item").toString();
  34.  
  35.                 Spinner sp = (Spinner) findViewById(R.id.spSrc);
  36.  
  37.                 addSpinner(sp);
  38.  
  39.                 sp = (Spinner) findViewById(R.id.spDest);
  40.  
  41.                 addSpinner(sp);
  42.  
  43.                
  44.  
  45.                  mRadioGroup = (RadioGroup) findViewById(R.id.group1);
  46.  
  47.                  mRadioGroup.setOnCheckedChangeListener(this);
  48.  
  49.                  et=(EditText)findViewById(R.id.Qty);
  50.  
  51.                 mDateDisplay=(TextView)findViewById(R.id.Date);
  52.  
  53.                  pr=ProcessRailway.getInstance();
  54.  
  55.                 Button pickDate = (Button) findViewById(R.id.btnDate);
  56.  
  57.                  pickDate.setOnClickListener(new View.OnClickListener() {
  58.  
  59.  
  60.  
  61.                     public void onClick(View v) {
  62.  
  63.                         new DatePickerDialog(TicketOrderForm.this,mDateSetListener,
  64.  
  65.                                         mYear, mMonth, mDay,
  66.  
  67.                                         Calendar.SUNDAY).show();
  68.  
  69.                        
  70.  
  71.                        
  72.  
  73.                     }
  74.  
  75.                 });
  76.  
  77.  
  78.  
  79.  
  80.  
  81.                 final Calendar c = Calendar.getInstance();
  82.  
  83.                 mYear = c.get(Calendar.YEAR);
  84.  
  85.                 mMonth = c.get(Calendar.MONTH);
  86.  
  87.                 mDay = c.get(Calendar.DAY_OF_MONTH);
  88.  
  89.                 LinearLayout lay = (LinearLayout) findViewById(R.id.ticketId);
  90.  
  91.                 lay.addView(pr.getFooterView());
  92.  
  93.         }
  94.  
  95.         private void addSpinner(Spinner sp) {
  96.  
  97.                 ArrayAdapter<String> pizzaTyp =new  ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.places));
  98.  
  99.                 pizzaTyp.setDropDownViewResource(R.layout.drop_down_item);
  100.  
  101.         sp.setAdapter(pizzaTyp);
  102.  
  103.         sp.setOnItemSelectedListener(spnListener);
  104.  
  105.                
  106.  
  107.         }
  108.  
  109.         private Spinner.OnItemSelectedListener spnListener =new Spinner.OnItemSelectedListener() {
  110.  
  111.              public void onItemSelected(AdapterView parent, View v, int position, long id) {
  112.  
  113.            
  114.  
  115.              }
  116.  
  117.  
  118.  
  119.              public void onNothingSelected(AdapterView arg0) {
  120.  
  121.                         // TODO Auto-generated method stub
  122.  
  123.                        
  124.  
  125.                 }            
  126.  
  127.         };
  128.  
  129.        
  130.  
  131.           private void updateDisplay() {
  132.  
  133.                 mDateDisplay.setText(
  134.  
  135.                     new StringBuilder()
  136.  
  137.                         .append(pad(mMonth)).append("/")
  138.  
  139.                         .append(pad(mDay)).append("/")
  140.  
  141.                         .append(mYear));
  142.  
  143.                            
  144.  
  145.             }
  146.  
  147.  
  148.  
  149.          private DatePicker.OnDateSetListener mDateSetListener =new DatePicker.OnDateSetListener() {
  150.  
  151.  
  152.  
  153.                         public void dateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
  154.  
  155.                             mYear = year;
  156.  
  157.                             mMonth = monthOfYear;
  158.  
  159.                             mDay = dayOfMonth;
  160.  
  161.                             updateDisplay();
  162.  
  163.                         }
  164.  
  165.         };
  166.  
  167.         public void onClick(View arg0) {
  168.  
  169.                         mRadioGroup.clearCheck();
  170.  
  171.                
  172.  
  173.         }
  174.  
  175.         public void onCheckedChanged(RadioGroup arg0, int checkedId) {
  176.  
  177.                
  178.  
  179.                  choice = checkedId;
  180.  
  181.                    
  182.  
  183.  
  184.  
  185.                
  186.  
  187.         }
  188.  
  189.         @Override
  190.  
  191.         public boolean onCreateOptionsMenu(Menu menu) {
  192.  
  193.                      super.onCreateOptionsMenu(menu);
  194.  
  195.                      menu.add(0, 0, getString(R.string.MENU_OK),R.drawable.ok);
  196.  
  197.                      
  198.  
  199.                      
  200.  
  201.                      return true;
  202.  
  203.         }
  204.  
  205.         public boolean onOptionsItemSelected(Menu.Item item){
  206.  
  207.                
  208.  
  209.                         Intent in =new Intent();
  210.  
  211.                         switch (item.getId()) {
  212.  
  213.                         case 0:
  214.  
  215.                                 try{
  216.  
  217.                                         int qty=Integer.valueOf(et.getText().toString());
  218.  
  219.                                         //int val=Integer.valueOf(strVal);
  220.  
  221.                                         ProcessRailway.amt=String.valueOf(1000*qty);
  222.  
  223.                                         pr.initService(this) ;
  224.  
  225.                                 }catch (NumberFormatException e) {
  226.  
  227.                                          showAlert( null, 0, "Validation Failure", "Please Check the Fields !!!", true );
  228.  
  229.                                 }
  230.  
  231.                                
  232.  
  233.                                 break;
  234.  
  235.                         }
  236.  
  237.                         return false;
  238.  
  239.         }
  240.  
  241.         @Override
  242.  
  243.         protected void onDestroy() {
  244.  
  245.                
  246.  
  247.                         super.onDestroy();
  248.  
  249.                        
  250.  
  251.         }
  252.  
  253.         @Override
  254.  
  255.         protected void onResume() {
  256.  
  257.                 // TODO Auto-generated method stub
  258.  
  259.                 super.onResume();
  260.  
  261.                 if(ProcessRailway.ppsStatus==true) {
  262.  
  263.                         ProcessRailway.ppsStatus=false;
  264.  
  265.                         try{
  266.  
  267.                                 if(ProcessRailway.conn!=null )
  268.  
  269.                                           pr.releaseService(this);
  270.  
  271.                                 finish();
  272.  
  273.                         }catch (Exception e) {
  274.  
  275.                                 // TODO: handle exception
  276.  
  277.                         }
  278.  
  279.                 }
  280.  
  281.                        
  282.  
  283.         }
  284.  
  285.  
  286.  
  287.         private static String pad(int c) {
  288.  
  289.         if (c >= 10)
  290.  
  291.             return String.valueOf(c);
  292.  
  293.         else
  294.  
  295.             return "0" + String.valueOf(c);
  296.  
  297.     }
  298.  
  299.     public View  getFooterView(){
  300.  
  301.                
  302.  
  303.            ViewInflate vif= (ViewInflate)mchekCtx.getSystemService(Context.INFLATE_SERVICE);
  304.  
  305.            View fv=vif.inflate(R.layout.footer, null, null);
  306.  
  307.            LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT
  308.  
  309.                                                   ,LayoutParams.WRAP_CONTENT);
  310.  
  311.            lp.gravity=0x01;
  312.  
  313.            fv.setClickable(false);
  314.  
  315.            fv.setSelected(false);
  316.  
  317.            fv.setLayoutParams(lp);
  318.  
  319.            return fv;
  320.  
  321.    }
  322.  
  323.  
  324.  
  325. }
Parsed in 0.057 seconds, using GeSHi 1.0.8.4


About Author:
Manmath Ray (Senior Engineer)
Image
Image | Android Development Community / Tutorials
User avatar
plusminus
Site Admin
Site Admin
 
Posts: 2688
Joined: Wed Nov 14, 2007 8:37 pm
Location: Schriesheim, Germany

Top

Postby hit1983 » Thu Dec 18, 2008 9:23 am

Is this for sdk1.0 ? Hope plus a compatible version stamp on the tutorials. thanks.
and it is not full codes ?
hit1983
Freshman
Freshman
 
Posts: 9
Joined: Mon Oct 06, 2008 8:08 am
Location: BeiJing

Postby bzouchir » Tue Jan 06, 2009 1:45 pm

Great Tut and thanks for the great collaboration and help.

Any chance we can get the source code in a downloadable format?
Like the entire working project?

cheers
bzouchir
Once Poster
Once Poster
 
Posts: 1
Joined: Tue Jan 06, 2009 1:38 pm

Top

Return to Novice Tutorials

Who is online

Users browsing this forum: No registered users and 13 guests