Spinnerオブジェクトに入力する文字列の配列があります。ただし、Spinnerの各要素にIDを添付したいので、ユーザーがアイテムを選択すると、そのIDを使用して他のデータに保存します。これどうやってするの?
IDとはどういう意味ですか。 ArrayAdapterを使用して、Spinnerを設定できます。アイテムが選択されたら、アダプターから要素を取得して、必要なデータを保存します。
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<MyObject> adapter = ... // initialize the adapter
adapter.setDropDownViewResource(Android.R.layout.some_view);
spinner.setAdapter(adapter);
アイテムが選択されたとき
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
MyObject selected = parent.getItemAtPosition(pos);
// save any data relevant with selected item
}
データをdbに格納している場合は、CursorAdapterとonItemSelectedを使用して、選択したアイテムIDをカーソルからフェッチできます。
クラスStringWithTagを作成し、次のようにリストの文字列名の代わりに使用します:-
public class StringWithTag {
public String string;
public Object tag;
public StringWithTag(String stringPart, Object tagPart) {
string = stringPart;
tag = tagPart;
}
@Override
public String toString() {
return string;
}
}
スピナーパーツへのアイテムの追加:-
List<StringWithTag> list = new ArrayList<StringWithTag>();
list.add(new StringWithTag("Oldman", "12345"));
list.add(new StringWithTag("Umpire", "987654"));
list.add(new StringWithTag("Squad", "ABCDEE"));
ArrayAdapter<StringWithTag> adap = new ArrayAdapter<StringWithTag> (this, Android.R.layout.simple_spinner_item, list);
....
....
リスナーで:-
public void onItemSelected(AdapterView<?> parant, View v, int pos, long id) {
StringWithTag s = (StringWithTag) parant.getItemAtPosition(pos);
Object tag = s.tag;
}
出来上がり! }
テキスト配列リソースの要素に任意のIDを付けることはできないと思います。
このようなIDをアタッチする最も簡単な方法は、(静的テキストリソースを使用している場合)ハードコードするか、(実行時に文字列を取得する場合)動的に構築する(配列内の文字列の位置) >(主キー)。
編集:一方、Mojo Risinには要点があります。CursorAdapterAPIがすでに必要なことを行っているかどうかを確認する必要があります。
Andrewこんにちは、久しぶりですが、書く価値はあります。
SpinnerAdapterでspinnerLayoutを膨らませているときに、各行にタグを設定できます。
spinnerView = inflater.inflate(spinnerLayout, parent, false);
spinnerView.setTag("Your Tag");
そして、あなたはタグを取得することができます:
yourSpinner.getSelectedView().getTag();