そこにあなたの専門家からのいくつかのアドバイスが必要です。Androidプログラミングを始めたばかりで、ようやく「Hello World」でやりたいことができるようになりましたが、概念を把握するのではなく、自分の道を踏みにじっているように感じます。
3つのEditTextボックスを作成しました。それらの下に3つのスピナーを作成しました。スピナーで番号を選択すると、対応するEditTextボックスに表示されます。Spinner1はEditText1、Spinner2はEditText2、Spinner3はEditText3と相関関係があります。これを機能させるのに非常に時間がかかりました。片付けをする必要があります。
私のスタートアップクラスでは:
EditText [] pick_nums = new EditText[3];
pick_nums[0] = (EditText) findViewById(R.id.r1c1);
pick_nums[1] = (EditText) findViewById(R.id.r1c2);
pick_nums[2] = (EditText) findViewById(R.id.r1c3);
Spinner test1 = (Spinner) findViewById(R.id.spin_pick_num1);
Spinner test2 = (Spinner) findViewById(R.id.spin_pick_num2);
Spinner test3 = (Spinner) findViewById(R.id.spin_pick_num3);
//スピナーを初期化するためのクラスを作成しました。
Context g = getApplicationContext();
Initialize_stuff spin1 = new Initialize_stuff(test1, g);
Initialize_stuff spin2 = new Initialize_stuff(test2, g);
Initialize_stuff spin3 = new Initialize_stuff(test3, g);
//対応するEditTextボックスに数値を入力するクラスを作成しました。ユーザーがボタンを押して入力を行わないようにしたかったので、3つの数字が入力されたら、ボタンを押さなくても何かを実行します。
Handle_Picks hp = new Handle_Picks(g, pick_nums);
//ここがぎこちなくてぎこちないと思うところです。Handle_Picksを正しく機能させるために、コンテキスト、EditTextsの配列、およびクラスHandle_Pickshpへの参照を設定するメソッドを作成しました。
Spinner_Listener listen = new Spinner_Listener();
listen.set_context(g, pick_nums, hp);
test1.setOnItemSelectedListener(listen);
test2.setOnItemSelectedListener(listen);
test3.setOnItemSelectedListener(listen);
//Spinner_Listenerクラス内
public class Spinner_Listener implements OnItemSelectedListener
static Handle_Picks hp1; //set in a method
private String num;
String v;
String spin_id;
int vv;
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id)
{
//To make this work I had to find the name of the spinner that was
//used so I could correlate it with the right EditText
vv = parent.getId();
v = parent.getResources().getResourceName(vv);
spin_id = parent.getResources().getResourceEntryName(vv);
setNum(parent.getItemAtPosition(pos).toString());
}
public void setNum(String s)
{
num = s;
hp1.handle_nums(spin_id, num);
}
//最後にクラスHandle_PicksI:
public class Handle_Picks extends Activity
{
static Context theContext;
EditText [] et;
String spin_num;
// constructor
Handle_Picks(Context f, EditText[] array)
{
theContext = f;
et = array;
}
public void handle_nums(String id, String aNumber)
{
spin_num = id;
if (spin_num.equalsIgnoreCase("spin_pick_num1"))
et[0].setText(aNumber);
else if (spin_num.equalsIgnoreCase("spin_pick_num2"))
et[1].setText(aNumber);
else if (spin_num.equalsIgnoreCase("spin_pick_num3"))
et[2].setText(aNumber);
}
さまざまなクラスの周りでリソースを渡したり参照したりするためのより良い方法はありますか?Spinner_ListenerクラスのHandle_Picksを使用する前に、ContextとEditTextの配列をHandle_Picksクラスに渡さなければならないのは正しくないようです。ちょっと危険そうです。
より良い方法は何ですか?