チェックボックス
チェックボックスのサンプルです。
package com.example.test.test57;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
//TextViewを使用する宣言
import android.widget.TextView;
//クリックイベント用に追加
import android.view.View.OnClickListener;
//ボタンを宣言
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements OnClickListener {
//setId用の管理番号
private int mNo1;
private int mNo2;
private int mNo3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
//配置を設定
x=50;
y=50;
width=50;
height=60;
RelativeLayout.LayoutParams obj1 = null;
mNo1 = View.generateViewId();
mNo2 = View.generateViewId();
mNo3 = View.generateViewId();
//チェックボックス1
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
CheckBox checkBox1 = new CheckBox(this);
checkBox1.setId(mNo1);
checkBox1.setChecked(true);
checkBox1.setOnClickListener(this);
layout.addView(checkBox1,obj1);
checkBox1=null;
y+=height+10;
//チェックボックス2
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
CheckBox checkBox2 = new CheckBox(this);
checkBox2.setId(mNo2);
checkBox2.setChecked(false);
checkBox2.setOnClickListener(this);
layout.addView(checkBox2,obj1);
checkBox2=null;
y+=height+10;
//ラベルを設置
width=300;
obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
TextView textView=new TextView(this);
textView.setId(mNo3);
textView.setText("ここに結果が表示されます。");
layout.addView(textView, obj1);
textView=null;
}
@Override
//ボタンがクリックされたら実行されます。
public void onClick(View view) {
int iResult = 0;
int iViewId=0;
iViewId=view.getId();
if(iViewId==mNo1)
{
iResult = judgeCheckBox(1);
}
else if(iViewId==mNo2)
{
iResult = judgeCheckBox(2);
}
if(iResult>0)
{
setTextViewText(iResult);
}
}
private int judgeCheckBox(int iCheckBox)
{
int iResult = 0;
boolean checked1=false;
boolean checked2=false;
CheckBox checkBox1=(CheckBox)findViewById(mNo1);
CheckBox checkBox2=(CheckBox)findViewById(mNo2);
checked1=checkBox1.isChecked();
checked2=checkBox2.isChecked();
if(checked1==true&&checked2==true)
{
iResult=3;
}
else if(checked1==true)
{
iResult=1;
}
else if(checked2==true)
{
iResult=2;
}
else
{
iResult=4;
}
checkBox1=null;
checkBox2=null;
return iResult;
}
private void setTextViewText(int iResult)
{
String sData = "";
if(iResult==1)
{
sData="最初のチェックがONです。";
}
else if(iResult==2)
{
sData="2番目のチェックがONです。";
}
else if(iResult==3)
{
sData="すべてチェックされています。";
}
else
{
sData="チェックされていません。";
}
TextView textView=(TextView)findViewById(mNo3);
textView.setText(sData);
textView=null;
}
//レイアウトを決定するオブジェクトを生成し渡します
private RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
初期値や何かのイベントでチェックボックスのチェック状況を変更する場合は
setCheckedを使います。
チェックをオンにするためにはtrue、チェックをオフにするためにはfalseを設定します。
チェックのイベントにはsetOnClickListenerを追加します。
ここではmNo1とmNo2にView.generateViewId()から取得したIdを付与することにより
onClickイベント内で引数の「(View view)」から
iViewId=view.getId();
とすることでIdで画面内に宣言されたIdを判定させます。
最初のチェックボックスがsetId(mNo1)、次のチェックボックスがsetId(mNo2)としているので
if文で判定して処理内容を実行させます。
(例)
iViewId=view.getId();
if(iViewId==mNo1)
{
iResult = judgeCheckBox(1);
}
else if(iViewId==mNo2)
{
iResult = judgeCheckBox(2);
}
このサンプルではチェック状況をisCheckedプロパティから取得します。
その結果をTextViewに表示させています。
結果表示
|
|