Android_baseComponentExample

xml布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="学号:"
            android:textSize="20sp"
            />
    <AutoCompleteTextView 
        android:id="@+id/actv_number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="5"
        android:hint="请输入学号"
        android:inputType="number"
        android:completionThreshold="2"/>
      </LinearLayout>
      <LinearLayout 
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal">
          <TextView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="密 码:"
              android:textSize="20sp"/>
          <EditText 
              android:id="@+id/et_psd"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="请输入密码"
              android:textSize="20sp"
              android:inputType="textPassword"/>
      </LinearLayout>
      <RelativeLayout 
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginTop="10dp"    
          >
          <TextView 
              android:id="@+id/hobby"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="爱好:"
              android:textSize="20sp"
              />
          <CheckBox 
              android:id="@+id/cb_1"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@id/hobby"
              android:layout_alignParentLeft="true"
              android:text="唱歌"
              android:checked="true"
              android:textSize="15sp"/>
          <CheckBox 
              android:id="@+id/cb_2"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@id/hobby"
              android:layout_toRightOf="@id/cb_1"
              android:layout_marginLeft="5dp"
              android:text="打球"
              android:checked="true"
              android:textSize="15sp"/>
          <CheckBox 
              android:id="@+id/cb_3"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@id/hobby"
              android:layout_toRightOf="@id/cb_2"
              android:layout_marginLeft="5dp"
              android:text="玩游戏"
              android:textSize="15sp"/>
          <CheckBox 
              android:id="@+id/cb_4"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@id/hobby"
              android:layout_toRightOf="@id/cb_3"
              android:text="敲代码"
              android:textSize="15sp"
              />
          <CheckBox 
              android:id="@+id/cb_all"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="全选"
              android:textSize="15sp"
              android:layout_below="@id/cb_1"
              android:layout_centerHorizontal="true"/>
      </RelativeLayout>
      <TextView 
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="性别:"
          android:textSize="20sp"
          />
    <Spinner 
        android:id="@+id/sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
      <LinearLayout 
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal">
          <Button 
        android:id="@+id/commit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="提交"
        android:textSize="15sp"
        />
    <Button 
        android:id="@+id/reset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="重置"
        android:textSize="15sp"
        />
    </LinearLayout>
</LinearLayout>

源代码:

package com.example.day04_work;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
public class MainActivity extends Activity implements OnClickListener,OnCheckedChangeListener{

    private EditText et_psd;
    private CheckBox cb_1;
    private CheckBox cb_2;
    private CheckBox cb_3;
    private CheckBox cb_4;
    private CheckBox cb_all;
    private Student student = new Student();
    private Button reset;
    private Button commit;
    private List<CheckBox> check1;
    private String srcnumber;
    private String srcpsd;
    private AutoCompleteTextView actv_number;
    private CheckBox[] checks;
    private Spinner spinner_sex;
    private String sex;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       actv_number= (AutoCompleteTextView) findViewById(R.id.actv_number);
       //得到数据源
       String[] stringArray = getResources().getStringArray(R.array.number);
      //定义适配器
       ArrayAdapter<String>adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line,stringArray);
       //设置适配器
       actv_number.setAdapter(adapter);
           //得到控件
       et_psd = (EditText)findViewById(R.id.et_psd);
       cb_1 = (CheckBox) findViewById(R.id.cb_1);
       cb_2 = (CheckBox) findViewById(R.id.cb_2);
       cb_3= (CheckBox) findViewById(R.id.cb_3);
       cb_4 = (CheckBox) findViewById(R.id.cb_4);
       cb_all =(CheckBox)findViewById(R.id.cb_all);
       reset = (Button)findViewById(R.id.reset);
       commit = (Button)findViewById(R.id.commit);
       
       spinner_sex= (Spinner) findViewById(R.id.sex);
       ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line,new String[]{"男","女"});
       spinner_sex.setAdapter(adapter2);
       //得到初始化时的所有数据
       getInitialContent();
           //为所有控件设置监听事件
       actv_number.setOnClickListener(this);
       et_psd.setOnClickListener(this);
       cb_1.setOnCheckedChangeListener(this);
       cb_2.setOnCheckedChangeListener(this);
       cb_3.setOnCheckedChangeListener(this);
       cb_4.setOnCheckedChangeListener(this);
       cb_all.setOnCheckedChangeListener(this);
       //提交按钮监听事件
       commit.setOnClickListener(new OnClickListener() {
           


        @Override
        public void onClick(View v) {
            String number = actv_number.getText().toString();
            String psd = et_psd.getText().toString();
            if(number.length()!=0 && psd.length()!=0){
                student.setNumber(Integer.parseInt(number));
                student.setPsd(psd);
            }else{
                Toast.makeText(MainActivity.this, "学号密码不能为空!", 0).show();
                return;
            }
            String result = "";
            // TODO Auto-generated method stub
            for (CheckBox checkBox : checks) {
                if(checkBox.isChecked()){
                    result +=checkBox.getText().toString();
                }
            }
            //安卓自带工具 TextUtils textUtils判断字符串是否为空
            //TextUtils.isEmpty(string)
            if(result.length()!=0){
                student.setHobby(result);
            }else{
                Toast.makeText(MainActivity.this, "爱好不能为空", 0).show();
            }
            student.setSex(sex);
            Toast.makeText(MainActivity.this, student.toString(), 1).show();
            
        }
    });
       //重置按钮监听事件
       reset.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            et_psd.setText(srcpsd);
            //学号获得焦点,光标在学号输入框上
            actv_number.requestFocus();
            actv_number.setText(srcnumber);
            //将初始化复选框数组中的控件设置为选中
            for (CheckBox checkBox2 : check1) {
                checkBox2.setChecked(true);
            }
            //遍历所有复选框,如果初始化复选框控件中不包含该复选框,设置为不选中
            for (CheckBox checkBox : checks) {
                if(!check1.contains(checkBox)){
                    checkBox.setChecked(false);
                }
            }
            spinner_sex.setSelection(0, true);
        }
        
    });
       //下拉列表选择性别
      spinner_sex.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {


        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            sex = spinner_sex.getItemAtPosition(position).toString();
            
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub
            
        }
    }) ;

    }
    /**
     * 得到初始化数据
     */
    private void getInitialContent() {
        // TODO Auto-generated method stub
           srcnumber = actv_number.getText().toString();
           srcpsd = et_psd.getText().toString();
           checks = new CheckBox[] {cb_1,cb_2,cb_3,cb_4,cb_all};
           check1 = new ArrayList<CheckBox>();
           for (CheckBox checkBox : checks) {
               if(checkBox.isChecked()){
                   check1.add(checkBox);
            }
        }
           spinner_sex.setSelection(0, true);
    }

    /**
     复选框监听事件:
     * 全选功能:
     * 1.全选状态改变:
     *        1.1 全选框选中时,所有复选框都选中
     *         1.2全选框取消时,如果所有复选框都为选中状态,则将所有复选框设置为不选中
     * 2.其他复选框选中时:
     *         2.1当所有复选框选中时,将全选框设置为选中
     *         2.2否则,将全选框设置为不选中
     */
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        List<String> list = new ArrayList<String>();
        // TODO Auto-generated method stub
            if(buttonView.getId() == cb_all.getId()){
                if(cb_all.isChecked()){
                    cb_1.setChecked(true);
                    cb_2.setChecked(true);
                    cb_3.setChecked(true);
                    cb_4.setChecked(true);
                }else if(cb_1.isChecked() && cb_2.isChecked() && cb_3.isChecked() && cb_4.isChecked()){
                    cb_1.setChecked(false);
                    cb_2.setChecked(false);
                    cb_3.setChecked(false);
                    cb_4.setChecked(false);
                }
            }else{
                if(cb_1.isChecked() && cb_2.isChecked() && cb_3.isChecked() && cb_4.isChecked()){
                    cb_all.setChecked(true);
                }else{
                    cb_all.setChecked(false);
                }
            
        }
        
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        String number = actv_number.getText().toString();
        String psd = et_psd.getText().toString();
        if(number!=null && psd != null){
            Toast.makeText(MainActivity.this, "学号:"+number+",密码"+psd, 0).show();
        }
    }

    
}
 
原文地址:https://www.cnblogs.com/fangg/p/5717793.html