版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
废话不多说 直接上效果图
效果图就展示完毕了,来看一下我的json数据
思路:首先spinner的适配器只接受String类型的数组,所以我们在网络请求解析完数据后要将你要展示的字段的值赋值到一个String数组里,为了使他有一个默认空值的选项,其实很简单我们只要在往数组里添加数据之前先往数组里添加一个空字符串 这样第一个就为空了 代码如下:(网络请求我就直接省略了 这是请求成功方法体内的操作)
var databean:MutableList<Textaas.DateBean>? = null//这个是全局变量(存放我解析网络数据的实体类)
//下面的实在请求数据完成的方法体内
var shuju:MutableList<String> =ArrayList()
databean = ArrayList()//初始化databean
databean?.addAll(result.date)
shuju.add("")
for(i in 0..result.date.size-1){
shuju.addAll(listOf(result.date.get(i).value))
}
var adapter:ArrayAdapter<String> = ArrayAdapter(this,R.layout.spinneritem,shuju)//这里的spinneritem布局是我自定义的
view.customer_item_search_perosn.adapter = adapter//设置适配器
完成以上你就可以实现完成图一图二的效果,但是当你点击spinner的最后一条数据你会发现程序强退了,重点就在这里了
我们可以在spinner的点击事件中进行设置
view.customer_item_search_perosn.setOnItemSelectedListener(object:AdapterView.OnItemSelectedListener{
override fun onNothingSelected(parent: AdapterView<*>?) {
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?,position:Int, id: Long) {
if(position==0){//当提交数据不选中下面的数据时 就设置为空
person=""
}else{
fenxi = databean?.get(position-1)//重点:当有要选中的实际值时 拿到data的对象,减一当点击有效数据时,出现的id和value就是对应的
// person = fenxi?.cpersoncode ?: ""
Log.i("waaaaa","id为${fenxi?.id}值为${fenxi?.value}")
}
}
})
ok,这就完成了
最后将数据实体类给放上来吧
public class Textaas {
/**
* state : access
* info : 查询成功
* date : [{"id":1,"value":"工艺改进类"},{"id":2,"value":"质量改进类"},{"id":3,"value":"服务优化类"},{"id":4,"value":"外部公关类"},{"id":5,"value":"成本降低类"},{"id":6,"value":"效率提升类"},{"id":7,"value":"流程简化类"},{"id":8,"value":"管理提升类"}]
*/
private String state;
private String info;
private List<DateBean> date;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public List<DateBean> getDate() {
return date;
}
public void setDate(List<DateBean> date) {
this.date = date;
}
public static class DateBean {
/**
* id : 1
* value : 工艺改进类
*/
private String id;
private String value;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}