近期做项目的时候遇到这么一个问题,从服务端获取数据后绑定到Spinner中,点击Sipnner后可以在列表中看到数据(如图),但是无法选中,一番百谷之后发现有人遇到了跟我一样的问题,http://zhidao.baidu.com/question/983506242874276619.html
解决方案一
软件启动后我们会发现Spinner的默认值为空项,点击下拉后再点击选项会无法选中,我们大多是用ArrayList做为Spinner的数据源,此时只需在加载网络数据之前为ArrayList添加一项即可(如第一项为:请选择,如图),具体可以参考下代码:
解决前:
//list.add("请选择");
FinalHttp fh = new FinalHttp();
fh.get("http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince?", new AjaxCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
XMLHelper.getResult("string", t, new CallBack()
{
@Override
public void getResult(String result)
{
list.add(result);
}
});
}
});
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
解决后:
list.add("请选择");
FinalHttp fh = new FinalHttp();
fh.get("http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince?", new AjaxCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
XMLHelper.getResult("string", t, new CallBack()
{
@Override
public void getResult(String result)
{
list.add(result);
}
});
}
});
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
如果不想添加一项,则请看方案二。
解决方案二
数据源加载成功,却无法选中,由于数据源是异步加载,我猜测问题是出在为Spinner设置Adapter时,所以将设置Adapter写在完全加载完数据之后,试了一下,完美解决。
附上修改后代码:
FinalHttp fh = new FinalHttp();
fh.get("http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince?", new AjaxCallBack()
{
@Override
public void onSuccess(String t)
{
super.onSuccess(t);
XMLHelper.getResult("string", t, new CallBack()
{
@Override
public void getResult(String result)
{
list.add(result);
}
});
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
});
本文由 花墨 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。