Androidに「CATEGORY」というラベルの付いたドロップダウンを実装したいと思います。
ここで、「CATEGORY」ボタンをクリックすると、リストが表示されます。しかし、そのリストでアイテムを選択すると、ラベル「CATEGORY」を変更したくありません。
どうやってするか?
Androidに「CATEGORY」というラベルの付いたドロップダウンを実装したいと思います。
ここで、「CATEGORY」ボタンをクリックすると、リストが表示されます。しかし、そのリストでアイテムを選択すると、ラベル「CATEGORY」を変更したくありません。
どうやってするか?
スピナーの仕組みを理解すれば、これは簡単です。:)
スピナーはgetView
メソッドを使用して閉じたスピナーにデータを入力し、getDropDownView
メソッドを使用してドロップダウンを作成します。この情報を使用して、閉じたビューに表示されている現在の選択以外のものを持つことができるカスタム アダプターを作成できます。これにより、データに非データ (「CATEGORY」という単語など) を含める必要がなくなります。
簡単な例:
public class CustomAdapter extends ArrayAdapter {
private Context context;
private int textViewResourceId;
private String[] objects;
public CustomAdapter(Context context, int textViewResourceId,
String[] objects) {
super(context, textViewResourceId, objects);
this.context = context;
this.textViewResourceId = textViewResourceId;
this.objects = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = View.inflate(context, textViewResourceId, null);
TextView tv = (TextView) convertView;
tv.setText("CATEGORY");
}
return convertView;
}
}
スピナーの残りの部分は通常どおり機能するため、onItemSelectedListener
.
メソッド内OnItemSelectedListener
で、選択の値を取得し、共有設定のどこかに保存し、:) を使用して位置をリセットしspinnersetSelection(0);
ます。スピナーが再度クリックされた場合は、共有設定から値を読み込みます :)