所以,此刻我是從一個數據庫表中填充的微調。目前使用微調時,也就是在微調的第一個值是剛從這是不甚理想的數據庫中的第一個。來自Db的Android Spinner - 默認值= null?
是否有微調一個很好的方式開始空白,而無需插入一個空白記錄或什麼?
所以,此刻我是從一個數據庫表中填充的微調。目前使用微調時,也就是在微調的第一個值是剛從這是不甚理想的數據庫中的第一個。來自Db的Android Spinner - 默認值= null?
是否有微調一個很好的方式開始空白,而無需插入一個空白記錄或什麼?
所以看起來這不太可能,相反,我走了與我選擇的名稱數據庫位置1處添加行不同的方法,並修改了查詢,以便場均能」 t被刪除。
好了,你可以使用Spinner
視圖的屬性prompt
,我是否android:prompt="whatever"
或setPrompt("whatever")
希望這有助於
對不起,我誤解,我不知道有沒有表現出以下任何方式初始值而不必添加空值。您必須提供與「無選擇」值相對應的項目。
嗯?是不是提示標題?不要以爲這是他的問題。 – Klaus 2011-03-17 21:15:31
如果你想有一個decorater spinnerAdapter女巫自動添加一個默認值:
public class SpinnerWithNoValue extends Spinner {
public SpinnerWithNoValue(Context context) {
super(context);
}
public SpinnerWithNoValue(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SpinnerWithNoValue(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setAdapter(SpinnerAdapter orig) {
final SpinnerAdapter adapter = new SpinnerAdapterWithNoValue(orig);
super.setAdapter(adapter);
try {
final Method m = AdapterView.class.getDeclaredMethod("setNextSelectedPositionInt",int.class);
m.setAccessible(true);
m.invoke(this,-1);
final Method n = AdapterView.class.getDeclaredMethod("setSelectedPositionInt",int.class);
n.setAccessible(true);
n.invoke(this,-1);
} catch(Exception e) {
throw new RuntimeException(e);
}
}
/*
* getSelectedItem
* renvoi null si la valeur par defaut est séléctionnée
* @see android.widget.AdapterView#getSelectedItem()
*/
@Override
public Object getSelectedItem()
{
return super.getSelectedItem();
}
}
你只需要改變:
protected class SpinnerAdapterWithNoValue implements SpinnerAdapter {
private SpinnerAdapter _current;
private final static String defaultValue = "Choisir";
public SpinnerAdapterWithNoValue(SpinnerAdapter base) {
_current = base;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return _current.getCount()+1;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
if(arg0 == 0 || arg0 == -1)
{
return null;
}
return _current.getItem(arg0-1);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
if(arg0 == 0 || arg0 == -1)
{
return -1;
}
return _current.getItemId(arg0-1);
}
@Override
public int getItemViewType(int arg0) {
// TODO Auto-generated method stub
if(arg0 == 0 || arg0 == -1)
{
return -1;
}
return _current.getItemViewType(arg0-1);
}
@Override
public View getView(int arg0, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(arg0 == 0 || arg0 == -1)
{
final TextView v = (TextView) ((LayoutInflater)getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.spinner_text,parent,false);
v.setText(defaultValue);
return v;
}
return _current.getView(arg0-1, convertView, parent);
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return _current.getViewTypeCount();
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return _current.hasStableIds();
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return _current.isEmpty();
}
@Override
public void registerDataSetObserver(DataSetObserver arg0) {
// TODO Auto-generated method stub
_current.registerDataSetObserver(arg0);
}
@Override
public void unregisterDataSetObserver(DataSetObserver arg0) {
// TODO Auto-generated method stub
_current.unregisterDataSetObserver(arg0);
}
@Override
public View getDropDownView(int arg0, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(arg0 == 0 || arg0 == -1)
{
CheckedTextView v = (CheckedTextView)((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(android.R.layout.simple_spinner_dropdown_item,parent,false);
v.setText(defaultValue);
return v;
}
return _current.getDropDownView(arg0-1, convertView, parent);
}
}
然後你就可以使用這個decorater創建自己微調在你的XML佈局中的微調聲明:
com.myproject.SpinnerWithNoValue
如果你想,你可以c請更改代碼以在您的微調器標籤中設置默認文本。
如果選擇的值是默認值,會的getItem返回null,getItemId將返回-1
紗廠總有一個選定的項目,據我所看到的。我還沒有看到一個空白的微調,如果它填充項目。爲什麼你想要它是空的? – Klaus 2011-03-17 21:18:46
是啊,我現在有一個反思,並已決定走製作的項目爲「未分類」的路線,並具有作爲第一選擇,而不僅僅是空白。感謝澄清傢伙。 – user319940 2011-03-17 21:33:23
檢查http://stackoverflow.com/questions/5988605/how-to-remove-text-that-appears-on-a-spinner-control-in-android – Nick 2011-08-13 22:46:20