私はdbから取り出されるCategory
のオブジェクトで構成されたスピナーを持っています。 Categoriesテーブルには_id
とcategory_name
のカラムがあります。スピナーにカテゴリ名を表示したいのですが、ユーザーがアイテムを選択すると、選択したアイテムのIDを取得する必要があります。 onCreate
方法でそれらをインスタンス化ダイナミックスピナーで選択したアイテムのIDを取得する方法は?
int currCategoryId;
ArrayAdapter<String> adapter;
NotesManager manager = new NotesManager(this);
ArrayList<Category> arrListCategories;
ArrayList<String> arrListCategoriesString = new ArrayList<String>();
Spinner spCategories;
:
宣言(クラスレベルでの)変数:私は次のことを試してみました
manager.getAllCategories();
arrListCategories = manager.getAllCategories();
for (int i = 0; i < arrListCategories.size(); i++)
{
Category currCategory = arrListCategories.get(i);
arrListCategoriesString.add(currCategory.getCategory_name().toString());
}
adapter=new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, arrListCategoriesString);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCategories.setAdapter(adapter);
spCategories.setOnItemSelectedListener(spinnerListener);
をそして、これは私が試したspinnerListenerです:
OnItemSelectedListener spinnerListener = new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// An item was selected.
//currCategory = (String) parent.getItemAtPosition(pos).toString();
//selectedCategory =
Category selectedCategory = (Category)spCategories.getItemAtPosition(pos);
currCategoryId = selectedCategory.getId();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
};
この場合、アプリがクラッシュし、「
Stringこの行で「カテゴリーにキャストすることはできません。
Category selectedCategory = (Category)spCategories.getItemAtPosition(pos);
また、私はこの試みた:
currCategoryId = view.getId();
をしかし、その後の代わりに、1または2(私が選択したものをカテゴリに応じて、現在は2つあります)、非常に長い番号を取得しています...
どうすれば修正できますか?選択したオブジェクトのIDを取得するにはどうすればよいですか?
try parent.getAdapter.getItem();あなたの希望するクラスにこのアイテムをキャストして、私はこれが動作することを願って –
@AdeelPervaizいいえ、動作しませんでした - getAdapterメソッドはありません... – Igal