2017-12-05 18 views
1

GridLayoutには18個のスピナーがあり、アクティビティー・レイアウトでは、それぞれに手動で値(アダプターなし)が割り当てられています。今度は、メソッドを呼び出すための "クリアボタン"が必要です: "onClickClear"は、各スピナーをデフォルト値に設定します。スピナーの数をデフォルトに設定する

18スピナーへの参照を書き、setSelection(0)を使用せずにこれを行う方法はありますか?私は、Androidにかなり新たなんだ、これがコンセプトのプロジェクトの証拠である私は:)

+1

いいえ私はそれが可能ではないと思います。スピナーへの言及が必要です。 – Sunny

答えて

0

にだけ、スピナーアレイに=新しいスピナー[18]スピナー[]スピナーのようなものを、それらのすべてを追加します。次にspinners [0] = findViewById ... そのようにすれば、forループを使ってすべてをデフォルト値に簡単に設定できます。 for(スピナースピナー:スピナー) spinner.setSelection(0)

+0

はい、これはやや単純化しているようです。これは私が探していたものです。非常に高く評価。 – AndroidDroid

0
Spinner sp = (Spinner)findViewById(R.id.spinner); 
sp.setSelection(pos); 

をやっている、ここでposは、アレイは、その後、POS = 0以下のようなものである整数(あなたの配列項目の位置)

です;

String str[] = new String{"Select Gender","male", "female" }; 

はその後onItemSelected

@Override 
public void onItemSelected(AdapterView<?> main, View view, int position, 
     long Id) { 

    if(position > 0){ 
     // get spinner value 
    }else{ 
     // show toast select gender 
    } 

} 
+0

はい、私はこれを行う標準的な方法だと思いますが、もしあなたが18スピナーを持っていれば、長い旅になるでしょう。私は多分、短くてエレガントであるためにこれをやるよりダイナミックな方法があると思った;) – AndroidDroid

1

最もレイジーではありません。それは子供

for (int i = 0; i < viewGroup.getChildCount(); i++) { 
    View currentView = viewGroup.getChildAt(i); 
    if (currentView instanceof Spinner) { 
     ((Spinner) currentView).setSelection(0); 
    } 
} 

それともあなたがそれらの上に配列し、ループ内でそれらを保持することができますが、あなたは、配列を移入するためにそれらを18回を見つける必要があります上

は親とループへの参照を検索します。

+0

このアプローチが最善ではない理由を詳細に教えてください。挨拶.. – AndroidDroid

+0

私は個人的ですが、私はinstanceofで解決策が気に入らない、ちょっとハッキリだと思っていますが、変更を加えずにスピナーを追加したり削除したりしてもソリューションは機能しますが、努力の面で最も簡単です。仕事が終わった – elmorabea

関連する問題