安卓学习之解决Spinner不显示的问题

来源:互联网 发布:湖南大学校园网域名 编辑:程序博客网 时间:2024/05/22 02:19

数据加载完切无误之后,发现spinner并没有默认值,数据是ArrayList<>保存的,然后给他配置适配器

适配器代码:

public class MyAdapter extends BaseAdapter {    private List<Area> mList;    private Context mContext;    public MyAdapter(Context pContext, List<Area> pList){        this.mContext = pContext;        this.mList = pList;    }    @Override    public int getCount() {        return mList.size();    }    @Override    public Object getItem(int i) {        return mList.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        LayoutInflater _LayoutInflater= LayoutInflater.from(mContext);        view = _LayoutInflater.inflate(R.layout.item,null);        TextView name = (TextView) view.findViewById(R.id.name);        name.setText(mList.get(i).getName());        return view;    }}
配置适配器:

city_adapter = new MyAdapter(this,cities);city_spinner.setAdapter(city_adapter);
cities是保存数据的ArrayList<>

然后无论是初始化还是点击之后spinner都没显示

问题找到:摘自CSDN论坛:这个问题好像是楼主异步加载数据造成的。当调用spinner.setAdapter()时候,那个adapter中还没有数据,自定义adapter也是一样问题,其实哪怕adapter中仅有一条记录,后期异步添加数据都没有问题。但一条数据都没有便会出现该问题,然而点击spinner任然会显示异步加载的数据。
最好的办法是,是异步数据加载完成后在调用spinner.setAdapter()就不会存在该问题

解决办法:可以在加载数据函数中判断是否数据加载完成,然后给handler发送一条数据来给spinner设置适配器