Android学习精要-CheckedTextView控件

CheckedTextView控件
在Android技术中实现打勾的checked效果其实还有另外一个控件也可以实现,它就是CheckedTextView控件。

新建名称为android2的Android项目,更改布局文件main.xml的代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2.     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  3.         android:id="@+id/scrollView1" android:layout_width="match_parent"
  4.         android:layout_height="wrap_content">
  5.         <LinearLayout android:padding="10px" android:orientation="vertical"
  6.             android:layout_width="fill_parent" android:layout_height="fill_parent">
  7.             <CheckedTextView android:tag="a1" android:id="@+id/checkedTextView1"
  8.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  9.                 android:checkMark="?android:attr/listChoiceIndicatorMultiple"
  10.                 android:text="checkedTextView1" />
  11.             <CheckedTextView android:tag="a2" android:id="@+id/checkedTextView2"
  12.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  13.                 android:checkMark="?android:attr/listChoiceIndicatorMultiple"
  14.                 android:text="checkedTextView2" />
  15.             <CheckedTextView android:tag="a3" android:id="@+id/checkedTextView3"
  16.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  17.                 android:checkMark="?android:attr/listChoiceIndicatorMultiple"
  18.                 android:text="checkedTextView4" />
  19.             <CheckedTextView android:tag="a4" android:id="@+id/checkedTextView4"
  20.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  21.                 android:checkMark="?android:attr/listChoiceIndicatorMultiple"
  22.                 android:text="checkedTextView5" />
  23.             <CheckedTextView android:tag="a5" android:id="@+id/checkedTextView5"
  24.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  25.                 android:checkMark="?android:attr/listChoiceIndicatorMultiple"
  26.                 android:text="checkedTextView6" />
  27.             <Button android:text="Button" android:id="@+id/button1"
  28.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
  29.             <CheckedTextView android:tag="A" android:id="@+id/checkedTextViewa"
  30.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  31.                 android:checkMark="?android:attr/listChoiceIndicatorSingle"
  32.                 android:text="checkedTextViewa" />
  33.             <CheckedTextView android:tag="B" android:id="@+id/checkedTextViewb"
  34.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  35.                 android:checkMark="?android:attr/listChoiceIndicatorSingle"
  36.                 android:text="checkedTextViewb" />
  37.             <CheckedTextView android:tag="C" android:id="@+id/checkedTextViewc"
  38.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  39.                 android:checkMark="?android:attr/listChoiceIndicatorSingle"
  40.                 android:text="checkedTextViewc" />
  41.             <CheckedTextView android:tag="D" android:id="@+id/checkedTextViewd"
  42.                 android:layout_width="fill_parent" android:layout_height="wrap_content"
  43.                 android:checkMark="?android:attr/listChoiceIndicatorSingle"
  44.                 android:text="checkedTextViewd" />
  45.             <Button android:text="Button" android:id="@+id/button2"
  46.                 android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
  47.         </LinearLayout>
  48.     </ScrollView>
由于本示例的控件比较多,为了能全部显示它们,所以用了带滚动条效果的控件。

  1. 文件Main.java的代码如下:  
  2. public class Main extends Activity {  
  3.     private CheckedTextView checkedTextViewMul1;  
  4.     private CheckedTextView checkedTextViewMul2;  
  5.     private CheckedTextView checkedTextViewMul3;  
  6.     private CheckedTextView checkedTextViewMul4;  
  7.     private CheckedTextView checkedTextViewMul5;  

  8.     private CheckedTextView checkedTextViewSinglea;  
  9.     private CheckedTextView checkedTextViewSingleb;  
  10.     private CheckedTextView checkedTextViewSinglec;  
  11.     private CheckedTextView checkedTextViewSingled;  

  12.     private Button getMulCheckedTextValue;  
  13.     private Button getSingleCheckedTextValue;  
  14.     private ArrayList<Integer> mulCheckedTextViewIdArray = new ArrayList();  
  15.     private ArrayList<Integer> singleCheckedTextViewIdArray = new ArrayList();  

  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  

  20.         getMulCheckedTextValue = (Button) this.findViewById(R.id.button1);  
  21.         getSingleCheckedTextValue = (Button) this.findViewById(R.id.button2);  

  22.         checkedTextViewMul1 = (CheckedTextView) this  
  23.                 .findViewById(R.id.checkedTextView1);  
  24.         checkedTextViewMul1.setChecked(true);  
  25.         checkedTextViewMul2 = (CheckedTextView) this  
  26.                 .findViewById(R.id.checkedTextView2);  
  27.         checkedTextViewMul3 = (CheckedTextView) this  
  28.                 .findViewById(R.id.checkedTextView3);  
  29.         checkedTextViewMul3.setChecked(true);  
  30.         checkedTextViewMul4 = (CheckedTextView) this  
  31.                 .findViewById(R.id.checkedTextView4);  
  32.         checkedTextViewMul5 = (CheckedTextView) this  
  33.                 .findViewById(R.id.checkedTextView5);  
  34.         checkedTextViewMul5.setChecked(true);  

  35.         mulCheckedTextViewIdArray.add(checkedTextViewMul1.getId());  
  36.         mulCheckedTextViewIdArray.add(checkedTextViewMul2.getId());  
  37.         mulCheckedTextViewIdArray.add(checkedTextViewMul3.getId());  
  38.         mulCheckedTextViewIdArray.add(checkedTextViewMul4.getId());  
  39.         mulCheckedTextViewIdArray.add(checkedTextViewMul5.getId());  

  40.         OnClickListener checkedTextViewMulListenerRef = new OnClickListener() {  
  41.             public void onClick(View arg0) {  
  42.                 ((CheckedTextView) arg0).toggle();  
  43.             }  
  44.         };  

  45.         checkedTextViewMul1.setOnClickListener(checkedTextViewMulListenerRef);  
  46.         checkedTextViewMul2.setOnClickListener(checkedTextViewMulListenerRef);  
  47.         checkedTextViewMul3.setOnClickListener(checkedTextViewMulListenerRef);  
  48.         checkedTextViewMul4.setOnClickListener(checkedTextViewMulListenerRef);  
  49.         checkedTextViewMul5.setOnClickListener(checkedTextViewMulListenerRef);  

  50.         getMulCheckedTextValue.setOnClickListener(new OnClickListener() {  
  51.             public void onClick(View arg0) {  
  52.                 for (int i = 0; i < mulCheckedTextViewIdArray.size(); i++) {  
  53.                     CheckedTextView findCheckedTextViewRef = (CheckedTextView) Main.this  
  54.                             .findViewById(mulCheckedTextViewIdArray.get(i));  
  55.                     if (findCheckedTextViewRef.isChecked() == true) {  
  56.                         Log.v("打勾的checkbox值是", ""  
  57.                                 + findCheckedTextViewRef.getTag());  
  58.                     }  
  59.                 }  
  60.             }  
  61.         });  

  62.         checkedTextViewSinglea = (CheckedTextView) this  
  63.                 .findViewById(R.id.checkedTextViewa);  
  64.         checkedTextViewSingleb = (CheckedTextView) this  
  65.                 .findViewById(R.id.checkedTextViewb);  
  66.         checkedTextViewSinglec = (CheckedTextView) this  
  67.                 .findViewById(R.id.checkedTextViewc);  
  68.         checkedTextViewSingled = (CheckedTextView) this  
  69.                 .findViewById(R.id.checkedTextViewd);  

  70.         singleCheckedTextViewIdArray.add(checkedTextViewSinglea.getId());  
  71.         singleCheckedTextViewIdArray.add(checkedTextViewSingleb.getId());  
  72.         singleCheckedTextViewIdArray.add(checkedTextViewSinglec.getId());  
  73.         singleCheckedTextViewIdArray.add(checkedTextViewSingled.getId());  

  74.         OnClickListener checkedTextViewSinglelListenerRef = new OnClickListener() {  
  75.             public void onClick(View arg0) {  
  76.                 for (int i = 0; i < singleCheckedTextViewIdArray.size(); i++) {  
  77.                     if (singleCheckedTextViewIdArray.get(i).intValue() != ((CheckedTextView) arg0)  
  78.                             .getId()) {  
  79.                         ((CheckedTextView) Main.this  
  80.                                 .findViewById(singleCheckedTextViewIdArray  
  81.                                         .get(i))).setChecked(false);  
  82.                     } else {  
  83.                         ((CheckedTextView) Main.this  
  84.                                 .findViewById(singleCheckedTextViewIdArray  
  85.                                         .get(i))).setChecked(true);  

  86.                     }  
  87.                 }  
  88.             }  
  89.         };  

  90.         checkedTextViewSinglea  
  91.                 .setOnClickListener(checkedTextViewSinglelListenerRef);  
  92.         checkedTextViewSingleb  
  93.                 .setOnClickListener(checkedTextViewSinglelListenerRef);  
  94.         checkedTextViewSinglec  
  95.                 .setOnClickListener(checkedTextViewSinglelListenerRef);  
  96.         checkedTextViewSingled  
  97.                 .setOnClickListener(checkedTextViewSinglelListenerRef);  

  98.         getSingleCheckedTextValue.setOnClickListener(new OnClickListener() {  
  99.             public void onClick(View arg0) {  
  100.                 for (int i = 0; i < singleCheckedTextViewIdArray.size(); i++) {  
  101.                     CheckedTextView eachCheckedTextViewRef = ((CheckedTextView) Main.this  
  102.                             .findViewById(singleCheckedTextViewIdArray.get(i)));  
  103.                     if (eachCheckedTextViewRef.isChecked() == true) {  
  104.                         Log.v("单选选中了:", ""  
  105.                                 + eachCheckedTextViewRef.getTag().toString());  
  106.                     }  
  107.                 }  
  108.             }  
  109.         });  

  110.     }  

CheckedTextView控件
程序初始运行效果如图3.19所示。
将多选控件的状态改成如图3.20所示。

图3.19  初始运行效果

图3.20  更变checked状态后界面


单击上方的Button按钮取出多选CheckedTextView控件的状态值,如图3.21所示。再把单选的状态改成如图3.22所示。

图3.21  第1个按钮按下的效果

图3.22  答案c被选中

图3.23  单选结果打印


你可能感兴趣的:(Android学习精要-CheckedTextView控件)