Android使用者介面之常用控制元件RadioGroup、CheckBox 2018/8/10

Wonchuang發表於2018-08-10

常用控制元件

提要:我學習的這個控制元件用法流程大概是這樣的。利用入門的介面卡傳遞資料。相應的還有一個資料類。接下來,建立一個活動並新建一個佈局相對應。基本上的控制元件都可以按這個思路進行。接下來是CheckBox控制元件。

公用部分

在MainActivity:

 private ArrayAdapter<ListCellData> adapter;//類為ListCellData,在後文建立的。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        adapter = new ArrayAdapter<ListCellData>(this, android.R.layout.simple_list_item_1);//預設是系統的android佈局
        setListAdapter(adapter);
        adapter.add(new ListCellData(this, "RadioGroup", new Intent(this, AtyUsingRadioGroup.class)));//新增控制元件及啟動活動,再後文的類中定義其中的方法。
        adapter.add(new ListCellData(this, "CheckBox", new Intent(this, AtyUsingCheckBox.class)));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        ListCellData data = adapter.getItem(position);
        data.StartActivity();// 定義點選方法啟動每一個Item的活動

    }

新建的資料類,中有Intent作引數啟動其他活動:

public class ListCellData { // 此類在前文用到

    public ListCellData(Context context,String contrlsName,Intent relatedIntent){
        this.contrlsName = contrlsName;//控制元件名
        this.context = context;//上下文
        this.relatedIntent = relatedIntent;//Intent,在MainActivtiy利用new Intent(MainActivity.this,元件名.class)啟動活動
    }
    private String contrlsName = "";

    public String getContrlsName() {
        return contrlsName;
    }

    private Context context =null;

    public Context getContext() {
        return context;
    }

    private Intent relatedIntent = null;

    public Intent getRelatedIntent() {
        return relatedIntent;
    }

    public void StartActivity(){
        getContext().startActivity(getRelatedIntent());
    }
    @Override
    public String toString(){
        return  getContrlsName();
    }
}

一、RadioGroup

在RadioGroup中:

public class AtyUsingRadioGroup extends Activity {

    private RadioButton radioRight;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aty_using_radiogroup);

        radioRight =(RadioButton) findViewById(R.id.radioRight);

        findViewById(R.id.btnSubmit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(radioRight.isChecked()){
                    new AlertDialog.Builder(AtyUsingRadioGroup.this).setTitle("判斷").setMessage("回答正確").setPositiveButton("關閉",null).show();
                }else {
                    new AlertDialog.Builder(AtyUsingRadioGroup.this).setTitle("判斷").setMessage("回答錯誤").setPositiveButton("關閉",null).show();
                }
            }
        });
    }
}

在xml佈局中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="android牛逼不?" />

    <RadioGroup

        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/radioRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="6" />

        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="不6" />

        <RadioButton
            android:id="@+id/radioButton3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="不知道" />
    </RadioGroup>

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交" />
</LinearLayout>

二、CheckBox

在CheckBox中:

public class AtyUsingCheckBox extends Activity {

    private CheckBox cbRB,cbHSR,cbHSPG,cbDoufu;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aty_using_checkbox);
        cbDoufu = (CheckBox) findViewById(R.id.cbDoufu);
        cbHSR = (CheckBox) findViewById(R.id.cbHSR);
        cbHSPG = (CheckBox) findViewById(R.id.cbHSPG);
        cbRB = (CheckBox) findViewById(R.id.cbRB);
        findViewById(R.id.btnSubmit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String str ="中午要吃的東西有:\n";
                if(cbRB.isChecked()){
                    str+="肉餅\n";
                }
                if(cbHSR.isChecked()){
                    str+="紅燒肉蓋飯\n";
                }
                if(cbHSPG.isChecked()){
                    str+="紅燒排骨蓋飯\n";
                }
                if(cbDoufu.isChecked()){
                    str+="豆腐蓋飯\n";
                }
                new AlertDialog.Builder(AtyUsingCheckBox.this).setTitle("結果").setMessage(str).setPositiveButton("關閉",null).show();
            }
        });
    }
}

在xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="中午你打算吃什麼" />

    <CheckBox
        android:id="@+id/cbRB"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="肉餅" />

    <CheckBox
        android:id="@+id/cbHSR"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="紅燒肉蓋飯" />

    <CheckBox
        android:id="@+id/cbHSPG"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="紅燒排骨蓋飯" />

    <CheckBox
        android:id="@+id/cbDoufu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="豆腐蓋飯" />

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交" />
</LinearLayout>

相關文章