数据加载完切无误之后,发现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都没显示
问题找到:摘自优快云论坛:这个问题好像是楼主异步加载数据造成的。当调用spinner.setAdapter()时候,那个adapter中还没有数据,自定义adapter也是一样问题,其实哪怕adapter中仅有一条记录,后期异步添加数据都没有问题。但一条数据都没有便会出现该问题,然而点击spinner任然会显示异步加载的数据。
最好的办法是,是异步数据加载完成后在调用spinner.setAdapter()就不会存在该问题
解决办法:可以在加载数据函数中判断是否数据加载完成,然后给handler发送一条数据来给spinner设置适配器