我試圖使用自定義行佈局微調如下:微調OnItemSelected不與自定義行佈局工作
String[] countryArr={"USA","Canada","Other"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.row, R.id.text, countryArr);
spinnerCountry.setAdapter(adapter);
row.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個值但不執行任何操作。
main.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
工作正常。
任何幫助表示讚賞。
爲什麼第二次發佈問題? – 2013-03-19 10:39:24
我刪除了,因爲它不是很清楚,格式不正確。 – GAMA 2013-03-19 10:40:25
爲什麼在微調器中使用單選按鈕?微調器一次選擇一個選項,您不需要單選按鈕,當您使用微調器時,您只能選擇一個項目fron微調器。 – 2013-03-19 12:27:36