Spinnerコントロールのデータ入れ替え
「setAdapter」に値を入れ直すことによりデータの入れ替えをすることができます。
下記はボタンで実行することで初期値のリストの値をボタンで実行した結果に入れ替えています。
package com.example.test.test50;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.RelativeLayout;
import android.widget.Spinner;
//クリックイベント用に追加
import android.view.View.OnClickListener;
//ボタンを宣言
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
init();
createScreen();
}
private int mNo1=0;
private int mNo2=0;
private int mNo3=0;
private ArrayAdapter<String> adapter=null;
private void init()
{
adapter= new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item);
adapter.add("北海道");
adapter.add("青森県");
adapter.add("秋田県");
adapter.add("岩手県");
adapter.add("宮城県");
adapter.add("山形県");
adapter.add("福島県");
}
//Spinnerによるコンボボックスと同等な機能を実装するテスト
private void createScreen()
{
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
//配置を設定
x=50;
y=50;
width=150;
height=60;
RelativeLayout.LayoutParams obj1 = null;
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
//ボタンの設置
Button btn1=new Button(this);
mNo1 = View.generateViewId();
btn1.setId(mNo1);
btn1.setOnClickListener(this);
btn1.setText("その1");
layout.addView(btn1,obj1);
btn1=null;
//ボタンの設置
x+=150+50;
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
Button btn2=new Button(this);
mNo2 = View.generateViewId();
btn2.setId(mNo2);
btn2.setOnClickListener(this);
btn2.setText("その2");
layout.addView(btn2,obj1);
btn2=null;
//y座標の位置をずらしています。
y+=100;
x=50;
width=300;
height=100;
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
Spinner spinner = new Spinner(this);
mNo3 = View.generateViewId();
spinner.setId(mNo3);
spinner.setAdapter(adapter);
layout.addView(spinner,obj1);
}
@Override
//ボタンがクリックされたら実行されます。
public void onClick(View view) {
int iViewId = 0;
int flg = 0;
iViewId = view.getId();
if(iViewId==mNo1)
{
adapter.clear();
adapter.add("にゃんこだにゃん");
adapter.add("わんこだわん");
adapter.add("ねずみかな");
adapter.add("からすもいるかな");
adapter.add("これで5個");
flg=1;
}
else if(iViewId==mNo2)
{
adapter.clear();
adapter.add("にゃんにゃん");
adapter.add("わんわん");
adapter.add("ちゅうちゅう");
flg=1;
}
if(flg>0)
{
//データを入れ替えます
Spinner spinner =(Spinner)findViewById(mNo3);
spinner.setAdapter(adapter);
}
}
//レイアウトを決定するオブジェクトを生成し渡します
private RelativeLayout.LayoutParams getLayoutObject(int width, int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
実行結果
|
|