Subscribe For Free Updates!

We'll not spam mate! We promise.

May 15, 2012

ListView with Check box in android

Views:

To Day I show You to Add check boxes in list box and how to access it in android .

In my Previous Post i show How to install android  and Demo Program and Basic Intro To android .

Some you must Know about it if not the please watch it First .

This example shows how to create a ListView with a CheckBox in each row, without having our Activity extend ListActivity.

Most of the functionality is contained in the Activity class.




  1. package com.windrealm.android;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Arrays;  
  5. import java.util.List;  
  6.   
  7. import android.app.Activity;  
  8. import android.content.Context;  
  9. import android.os.Bundle;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12. import android.view.ViewGroup;  
  13. import android.widget.AdapterView;  
  14. import android.widget.ArrayAdapter;  
  15. import android.widget.CheckBox;  
  16. import android.widget.ListView;  
  17. import android.widget.TextView;  
  18.   
  19. public class PlanetsActivity extends Activity {  
  20.     
  21.   private ListView mainListView ;  
  22.   private Planet[] planets ;  
  23.   private ArrayAdapter<Planet> listAdapter ;  
  24.     
  25.   /** Called when the activity is first created. */  
  26.   @Override  
  27.   public void onCreate(Bundle savedInstanceState) {  
  28.     super.onCreate(savedInstanceState);  
  29.     setContentView(R.layout.main);  
  30.       
  31.     // Find the ListView resource.   
  32.     mainListView = (ListView) findViewById( R.id.mainListView );  
  33.       
  34.     // When item is tapped, toggle checked properties of CheckBox and Planet.  
  35.     mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
  36.       @Override  
  37.       public void onItemClick( AdapterView<?> parent, View item,   
  38.                                int position, long id) {  
  39.         Planet planet = listAdapter.getItem( position );  
  40.         planet.toggleChecked();  
  41.         PlanetViewHolder viewHolder = (PlanetViewHolder) item.getTag();  
  42.         viewHolder.getCheckBox().setChecked( planet.isChecked() );  
  43.       }  
  44.     });  
  45.   
  46.       
  47.     // Create and populate planets.  
  48.     planets = (Planet[]) getLastNonConfigurationInstance() ;  
  49.     if ( planets == null ) {  
  50.       planets = new Planet[] {   
  51.           new Planet("Mercury"), new Planet("Venus"), new Planet("Earth"),   
  52.           new Planet("Mars"), new Planet("Jupiter"), new Planet("Saturn"),   
  53.           new Planet("Uranus"), new Planet("Neptune"), new Planet("Ceres"),  
  54.           new Planet("Pluto"), new Planet("Haumea"), new Planet("Makemake"),  
  55.           new Planet("Eris")  
  56.       };    
  57.     }  
  58.     ArrayList<Planet> planetList = new ArrayList<Planet>();  
  59.     planetList.addAll( Arrays.asList(planets) );  
  60.       
  61.     // Set our custom array adapter as the ListView's adapter.  
  62.     listAdapter = new PlanetArrayAdapter(this, planetList);  
  63.     mainListView.setAdapter( listAdapter );        
  64.   }  
  65.     
  66.   /** Holds planet data. */  
  67.   private static class Planet {  
  68.     private String name = "" ;  
  69.     private boolean checked = false ;  
  70.     public Planet() {}  
  71.     public Planet( String name ) {  
  72.       this.name = name ;  
  73.     }  
  74.     public Planet( String name, boolean checked ) {  
  75.       this.name = name ;  
  76.       this.checked = checked ;  
  77.     }  
  78.     public String getName() {  
  79.       return name;  
  80.     }  
  81.     public void setName(String name) {  
  82.       this.name = name;  
  83.     }  
  84.     public boolean isChecked() {  
  85.       return checked;  
  86.     }  
  87.     public void setChecked(boolean checked) {  
  88.       this.checked = checked;  
  89.     }  
  90.     public String toString() {  
  91.       return name ;   
  92.     }  
  93.     public void toggleChecked() {  
  94.       checked = !checked ;  
  95.     }  
  96.   }  
  97.     
  98.   /** Holds child views for one row. */  
  99.   private static class PlanetViewHolder {  
  100.     private CheckBox checkBox ;  
  101.     private TextView textView ;  
  102.     public PlanetViewHolder() {}  
  103.     public PlanetViewHolder( TextView textView, CheckBox checkBox ) {  
  104.       this.checkBox = checkBox ;  
  105.       this.textView = textView ;  
  106.     }  
  107.     public CheckBox getCheckBox() {  
  108.       return checkBox;  
  109.     }  
  110.     public void setCheckBox(CheckBox checkBox) {  
  111.       this.checkBox = checkBox;  
  112.     }  
  113.     public TextView getTextView() {  
  114.       return textView;  
  115.     }  
  116.     public void setTextView(TextView textView) {  
  117.       this.textView = textView;  
  118.     }      
  119.   }  
  120.     
  121.   /** Custom adapter for displaying an array of Planet objects. */  
  122.   private static class PlanetArrayAdapter extends ArrayAdapter<Planet> {  
  123.       
  124.     private LayoutInflater inflater;  
  125.       
  126.     public PlanetArrayAdapter( Context context, List<Planet> planetList ) {  
  127.       super( context, R.layout.simplerow, R.id.rowTextView, planetList );  
  128.       // Cache the LayoutInflate to avoid asking for a new one each time.  
  129.       inflater = LayoutInflater.from(context) ;  
  130.     }  
  131.   
  132.     @Override  
  133.     public View getView(int position, View convertView, ViewGroup parent) {  
  134.       // Planet to display  
  135.       Planet planet = (Planet) this.getItem( position );   
  136.   
  137.       // The child views in each row.  
  138.       CheckBox checkBox ;   
  139.       TextView textView ;   
  140.         
  141.       // Create a new row view  
  142.       if ( convertView == null ) {  
  143.         convertView = inflater.inflate(R.layout.simplerow, null);  
  144.           
  145.         // Find the child views.  
  146.         textView = (TextView) convertView.findViewById( R.id.rowTextView );  
  147.         checkBox = (CheckBox) convertView.findViewById( R.id.CheckBox01 );  
  148.           
  149.         // Optimization: Tag the row with it's child views, so we don't have to   
  150.         // call findViewById() later when we reuse the row.  
  151.         convertView.setTag( new PlanetViewHolder(textView,checkBox) );  
  152.   
  153.         // If CheckBox is toggled, update the planet it is tagged with.  
  154.         checkBox.setOnClickListener( new View.OnClickListener() {  
  155.           public void onClick(View v) {  
  156.             CheckBox cb = (CheckBox) v ;  
  157.             Planet planet = (Planet) cb.getTag();  
  158.             planet.setChecked( cb.isChecked() );  
  159.           }  
  160.         });          
  161.       }  
  162.       // Reuse existing row view  
  163.       else {  
  164.         // Because we use a ViewHolder, we avoid having to call findViewById().  
  165.         PlanetViewHolder viewHolder = (PlanetViewHolder) convertView.getTag();  
  166.         checkBox = viewHolder.getCheckBox() ;  
  167.         textView = viewHolder.getTextView() ;  
  168.       }  
  169.   
  170.       // Tag the CheckBox with the Planet it is displaying, so that we can  
  171.       // access the planet in onClick() when the CheckBox is toggled.  
  172.       checkBox.setTag( planet );   
  173.         
  174.       // Display planet data  
  175.       checkBox.setChecked( planet.isChecked() );  
  176.       textView.setText( planet.getName() );        
  177.         
  178.       return convertView;  
  179.     }  
  180.       
  181.   }  
  182.     
  183.   public Object onRetainNonConfigurationInstance() {  
  184.     return planets ;  
  185.   }  
  186. }  


Downloads

The source code and Eclipse project files for this tutorial can be downloaded here.

Plese Feel Free to Socializer This Post
SOCIALIZE IT →
FOLLOW US →
SHARE IT →

0 comments:

Post a Comment

Become a Fan

visual studio learn