spinner中ArrayAdapter中传递对象的用法

通常用ArrayList<String>填充Spinner的Adapter,但传递对象时不能满足需求,因ID无处存储。查阅API可知ArrayAdapter<T>可将T替换为所需对象,实现时会遇到显示和处理不同属性的问题,可重写对象的toString()方法或重写adapter解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:http://www.blogjava.net/anchor110/articles/356250.html

一般情况下,我们会用ArrayList<String>来填充Spinner中的Adapter。
但有时,我们需要传递一些对象,比如选择用户的时候,显示的是用户名,但我们要处理的是用户ID。
这时侯如果用ArrayList<String>,则不能满足我们的需求,因为,ID没地方储存。

查阅API,发现ArrayAdapter的类声明为ArrayAdapter<T>,说明,我们可以把T替换成我们想要的对象。

于是我们可以构建如下的语句:

ArrayList<User> users = new ArrayList<User>();
ArrayAdapter<User> adapter = new ArrayAdapter<User>(
                this,
                android.R.layout.simple_spinner_item,
                users
                );


但这时有会遇到一个问题,既然你传递过来的是一个obj,但我的要求是:显示用name显示,处理用id,这个怎么实现咧。
答案是,重写User的toString()方法,只返回name。这样就能满足我们的需求啦。当然,这只是一种简单的做法,一般情况下,还有另一种写法,就是重写adapter。

如:

class User{
	    public int id;
	    public String name;

	    public User(int id, String name){
	        this.id = id;
	        this.name = name;
        }

        @Override
        public String toString() {
            return name;
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值