我正在尝试为微调器使用自定义行布局,如下所示:
String[] countryArr={"USA","Canada","Other"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.row, R.id.text, countryArr);
spinnerCountry.setAdapter(adapter);
行.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingLeft="20dp"
android:paddingTop="10dp" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/BLACK"
android:textSize="26dp" />
<RadioButton
android:id="@+id/radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />
</RelativeLayout>
和java代码:
spinnerCountry.setOnItemSelectedListener(new MyOnItemSelectedListener());
public class MyOnItemSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id) {
selected = parent.getItemAtPosition(pos).toString().trim();
Log.i("MyOnItemSelectedListener","selected ="+selected);
}
@SuppressWarnings("rawtypes")
public void onNothingSelected(AdapterView parent) {
etCountry.setText("");
Log.i("MyOnItemSelectedListener","nothing selected");
}
}
当我启动应用程序时,我在日志中得到这个:"selected =Other"
因为它是默认的。
但是当我单击微调器时,我得到如下所示的屏幕并且onItemSelected
不起作用,因此始终显示警报框,允许选择所有 3 个值但不执行任何操作。
主要的.xml
<com.Mypackage.MySpinner
android:id="@+id/SpinnerCountry1"
android:layout_width="45dp"
android:layout_height="59dp"
android:layout_marginLeft="160dp"
android:background="@drawable/selector_slim_spinner"
android:clickable="true"
android:entries="@array/blankarray" />
public class MySpinner extends Spinner {
private Context _context;
public MySpinner(Context context, AttributeSet attrs) {
super(context, attrs);
_context = context;
}
public MySpinner(Context context) {
super(context);
_context = context;
}
public MySpinner(Context context, AttributeSet attrs, int defStyle) {
super(context);
_context = context;
}
@Override
public View getChildAt(int index) {
View v = new View(_context);
return v;
}
}
请注意,如果我不对微调器使用自定义行布局,则OnItemSelected
可以正常工作。
任何帮助表示赞赏。