Androidプログラミングの初心者で、スピナーセレクターに少し戸惑いました...同じことに関連するいくつかの質問を見つけましたが、どれも私の目的に適合しません:
objectSpinner = (Spinner) findViewById(R.id.objectSpinner);
objectSpinner.setOnItemSelectedListener(MainActivity.this);
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long position2) {
Object object = adapterView.getAdapter().getItem(position);
Log.d("Spinner", "itemSelected: " + position + " - Object: " + object);
menuLayout = new View(this);
if (object instanceof Filter) {
Filter mFilter = (Filter) object;
setAdapterFilter(mFilter);
}
}
そして、すべてのデータをスピナーに設定するメソッドを次に示します (スピナーのデータは最初に onCreate メソッドにロードされますが、ユーザーがスピナーから選択したアイテムに応じて変更される可能性があるため、onItemSelected が何度も呼び出されます.. .)
public void setAdapterFilter(Filter filter) {
frameLayout.removeAllViews();
if (filter != null) {
menuLayout = inflater.inflate(R.layout.filter, null);
TextView typeTxt = (TextView) menuLayout
.findViewById(R.id.type_txt);
typeTxt.setText(filter.getType());
frameLayout.addView(menuLayout, 0);
}
ArrayAdapter<Filter> filterAdapter = new ArrayAdapter<Filter>(this,
android.R.layout.simple_spinner_item, filterArrayList);
objectSpinner.setAdapter(filterAdapter);
}
主な質問は次のとおりです。スピナーの動作を変更するにはどうすればよいですか? アダプターが設定されてデータがロードされたときではなく、クリックされた (タッチされた) ときに onItemSelected イベントが発生する必要があります。