Checkbox Text List

 

Checkbox Text List :: Extension of Iconified Text tutorial



What you will learn: How to create a list of items with Checkboxes 
Description: 
This tutorial grew from another tutorial here which dealt with making lists with icons attached to each list item. (IconifiedTextView tutorial). 

1. In order to make a List which includes checkboxes, we need to modify a few things. In CheckBoxifiedText.java, we made a String to hold the text of our list item. We also need a boolean value to keep track of the status of the checkbox (checked = true, unchecked = false). The constructor will initialize the checkbox to be checked or unchecked. 

Java:
public   class  CheckBoxifiedText   implements  Comparable {  

private   String  mText =   "";  
private   boolean  mChecked;  
public  CheckBoxifiedText ( String  text,   boolean  checked )   {  
/* constructor */  
mText = text;  
mChecked = checked;  
}


2. Second, we need to look at CheckboxifiedTextViewAdapter.java. We need to add code to support our checkbox. (src.getChecked()will tell us whether our box is checked or not. 

Java:
public   View  getView ( int  position,   View  convertView, ViewGroup parent ) {  
CheckBoxifiedTextView btv;  
if   (convertView ==   null )   {  
btv =   new  CheckBoxifiedTextView (mContext, mItems. get (position ) );  
}   else   {   // Reuse/Overwrite the View passed  
// We are assuming(!) that it is castable!  
CheckBoxifiedText src = mItems. get (position );  
btv =   (CheckBoxifiedTextView )  convertView;  
btv. setCheckBoxState (src. getChecked ( ) );  
btv =   (CheckBoxifiedTextView )  convertView;  
btv. setText (mItems. get (position ). getText ( ) );  
}  
return  btv;  
}


We also want to add some methods for doing things like getting the state of the checkbox, or selecting all the items. 

Java:
public   void  selectAll ( ) {  
for (CheckBoxifiedText cboxtxt: mItems )  
cboxtxt. setChecked ( true );  
/* Things have changed, do a redraw. */  
this. notifyDataSetInvalidated ( );  
}


3. Open up CheckBoxifiedTextView.java. We need to set up where we want the checkbox to be located, the text location, and whether the box is checked or not. 

Java:
public  CheckBoxifiedTextView ( Context  context, CheckBoxifiedText aCheckBoxifiedText )   {  
super (context );  

/* First CheckBox and the Text to the right (horizontal), 
* not above and below (vertical) */
 
this. setOrientation (HORIZONTAL );  
mCheckBoxText = aCheckBoxifiedText;  
mCheckBox =   new  CheckBox (context );  
mCheckBox. setPadding ( 0,   0,   20,   0 );   // 5px to the right  

/* Set the initial state of the checkbox. */  
mCheckBox. setChecked (aCheckBoxifiedText. getChecked ( ) );  


/* At first, add the CheckBox to ourself 
* (! we are extending LinearLayout) */
 
addView (mCheckBox,   new  LinearLayout. LayoutParams (  
LayoutParams. WRAP_CONTENT, LayoutParams. WRAP_CONTENT ) );  

mText =   new  TextView (context );  
mText. setText (aCheckBoxifiedText. getText ( ) );  
//mText.setPadding(0, 0, 15, 0);  
addView (mText,   new  LinearLayout. LayoutParams (  
LayoutParams. WRAP_CONTENT, LayoutParams. WRAP_CONTENT ) );  
}



4. Finally, we can look at our ListActivity code which will be using the classes we just made. In the attached source code, this is theCheckbox.java file. For this example, i am using an array of strings which contain the text we want in each list item. We create a checkboxlist adapter, cbla, first. 

Then, we loop through each item in the array and add it to the list adapter (using cbla.addItem()). I am setting all the checkboxes to initially be unchecked by passing the value of FALSE. 

Java:
public   class   Checkbox   extends  ListActivity   {  
/** Called when the activity is first created. */  

private  CheckBoxifiedTextListAdapter cbla;  
// Create CheckBox List Adapter, cbla  
private   String [ ]  items =   { "Box 1",   "Box 2",   "Box 3",   "Box 4" };  
// Array of string we want to display in our list  

@Override  
public   void  onCreate (Bundle icicle )   {  
super. onCreate (icicle );  
setContentView (R. layout. main );  

cbla =   new  CheckBoxifiedTextListAdapter ( this );  
for ( int  k= 0; k length; k++ )  
{  
cbla. addItem ( new  CheckBoxifiedText (items [k ],   false ) );  
}  
// Display it  
setListAdapter (cbla );  
}  
}



Thats pretty much it. Not much work! Attached are all the source files you will need for this tutorial. I have also added functions such as select all, and deselect all which will come in handy.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值