发新帖

解决Android Spinner网络获取数据后无法选中问题

[复制链接]
12244 1
    近期做项目的时候遇到这么一个问题,从服务端获取数据后绑定到Spinner中,点击Sipnner后可以在列表中看到数据(如图),但是无法选中,一番百谷之后发现有人遇到了跟我一样的问题,http://zhidao.baidu.com/question/983506242874276619.html



解决方案一:

软件启动后我们会发现Spinner的默认值为空项,点击下拉后再点击选项会无法选中,我们大多是用ArrayList做为Spinner的数据源,此时只需在加载网络数据之前为ArrayList添加一项即可(如第一项为:请选择,如图),具体可以参考下代码:

解决前:

[Java] 纯文本查看 复制代码
//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);

解决后:

[Java] 纯文本查看 复制代码
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写在完全加载完数据之后,试了一下,完美解决。


附上修改后代码

[Java] 纯文本查看 复制代码
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);
    }
});


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

精彩评论1

sndncel    发表于 2015-3-14 12:14:45 | 显示全部楼层
支持原创作品。。。。。。。顶一下。。。。

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表