我有一个微调器,它使用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