私はAndroidプログラミングに不慣れで、レンガの壁に頭をぶつけているような気がします。
2つのスピナーを設定しようとしているので、スピナー1でアイテムを選択すると、スピナー2で新しいアイテムのリストが表示されますが、問題は、スピナー1に4つのアイテムがあり、各アイテムが異なるものを表示することです。 2番目のスピナーに関する情報。2番目のスピナーの項目を選択したときにそれだけでは不十分な場合は、別の情報セットを使用したいと思います。
どんな助けでも大歓迎です。
私はAndroidプログラミングに不慣れで、レンガの壁に頭をぶつけているような気がします。
2つのスピナーを設定しようとしているので、スピナー1でアイテムを選択すると、スピナー2で新しいアイテムのリストが表示されますが、問題は、スピナー1に4つのアイテムがあり、各アイテムが異なるものを表示することです。 2番目のスピナーに関する情報。2番目のスピナーの項目を選択したときにそれだけでは不十分な場合は、別の情報セットを使用したいと思います。
どんな助けでも大歓迎です。
アクティビティにonItemSelectedListenerを実装させ、スピナーを次のようにバインドします。
spinner1.setOnItemSelectedListener(this);
spinner2.setOnItemSelectedListener(this);
次に、onItemSelectedメソッドを使用して、次のように2番目のスピナーのデータセットを変更します。
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if( parent == spinner1 ) {
if( pos == 0 ) {
ArrayAdapter<String> newAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, newDataSet1);
newAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(newAdapter);
} else if( pos == 1 ) {
//etc
}
}
}
そして、親がspinner2と等しいかどうかをチェックして、外側のifに2番目の句を追加し、そのような3番目のスピナーの代わりに他のデータセットを使用できます。幸運を!
私の意見では、よりクリーンな解決策は、リスナーをインラインで定義するか、リスナーをの内部クラスとして定義することActivity
です。
例:
layout.xml
<Spinner
android:id="@+id/spinner_1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spinner_2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
MyActivity.java
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spinnerOne = (Spinner) findViewById(R.id.spinner_1);
Spinner spinnerTwo = (Spinner) findViewById(R.id.spinner_2);
spinnerOne.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
spinnerTwo.setAdapter(/*set new information in spinner 2 here*/);
}
});
}
}