Sau khi thiết lập bộ điều hợp. màu sắc văn bản để minh bạch.
// Preselect the first to make the spinner text transparent
spinner.setSelection(0, false);
TextView selectedView = (TextView) spinner.getSelectedView();
if (selectedView != null) {
selectedView.setTextColor(getResources().getColor(R.color.transparent));
}
Sau đó, thiết lập OnItemSelectedListener của bạn (nếu cần thiết).
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
này sẽ làm cho spinner trống ở lần đầu tiên nhìn thấy. Nhưng, nếu người dùng sẽ chọn mục đầu tiên, nó sẽ không làm gì vì 0 được chọn trước. Để sửa lỗi này tôi đã sử dụng phân lớp này của spinner. lấy từ @ melquiades của answer:
/**
* Spinner extension that calls onItemSelected even when the selection is the same as its previous value
*/
public class FVRSpinner extends Spinner {
public FVRSpinner(Context context) {
super(context);
}
public FVRSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FVRSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setSelection(int position, boolean animate) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position, animate);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
if (getOnItemSelectedListener() != null) {
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
}
@Override
public void setSelection(int position) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
if (getOnItemSelectedListener() != null) {
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
}
}
Một ArrayAdapter có một phương pháp 'thêm', nhưng SimpleCursorAdapter haven't nó. Bạn có thể giải thích làm thế nào thêm một giá trị null với mã, mà không cần sử dụng CursorWrapper ?. Cảm ơn –
AAP
Xin lỗi vì đã đến trễ, có thể [this] (http://stackoverflow.com/questions/8508678/how-to-add-an-item-to-simplecursoradapter) sẽ giúp bằng cách nào đó. – IronBlossom