我有一個微調器,它使用getDropDownView()被覆蓋的自定義適配器。自定義下拉視圖中的每個項目都由TextView和Button組成。微調控制器自定義下拉視圖不觸發onItemSelected()
但是,當我運行我的代碼時,微調項下拉菜單顯示正常,但點擊它們什麼也不做。微調器下拉菜單保持打開狀態,spinner.onItemSelected()未被觸發。
drop_down_item.xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/dropdown_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:singleLine="true" />
<Button
android:id="@+id/dropdown_button"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:text="Remove"/>
</RelativeLayout>
定義適配器代碼
public View getDropDownView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.drop_down_item, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.dropdown_text);
textView.setText(mValues.get(position));
Button buttonView = (Button) rowView.findViewById(R.id.dropdown_button));
return rowView;
}
創建我的微調和適配器驗證碼:
spinner = (Spinner) findViewById(R.id.my_spinner);
MyAdapter adapter = new MyAdapter(getViewContext(), R.layout.spinner_item, values);
adapter.setDropDownViewResource(R.layout.drop_down_item);
spinner.setAdapter(adapter);
...
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// Do something here - but this never runs
}
});
,所以我不知道爲什麼onItem Selected()不再被調用?
我想知道是否需要在下拉式TextView上放置一個點擊偵聽器,然後再觸發onItemSelected(),也許使用spinner.setSelection(pos)?
你是否在getDropDownView中定義了OnClickListener,它是行得通的?在我的情況下,當我在getDropDownView中添加任何OnClickListener時,單擊後不會關閉微調視圖。 – Kenji