android之通过Button的监听器往adapter中添加数据时出错

本来源代码如下: List model; //自定义的一个List数据,存储的是自定义的类 LunchListAdapter adapter;//自定义的一个ListView的适配器 ……//省略class onSavaLis implements OnClickListener{ //Button s

大家好,又见面了,我是全栈君。

本来源代码如下:

	List<Restaurant> model; //自定义的一个List数据,存储的是自定义的类                                    	LunchListAdapter adapter;//自定义的一个ListView的适配器
	......//省略
class onSavaLis implements OnClickListener{			//Button save的监听器,点击之后往model里面添加数据
		Restaurant r = new Restaurant();//②		
		@Override
		public void onClick(View v) {
			r.setName(name.getText().toString());
			r.setAddress(addr.getText().toString());
			switch (types.getCheckedRadioButtonId()) {
			case R.id.take_out:
				r.setType(TAKE_OUT);
				break;
			case R.id.sit_down:
				r.setType(SIT_DOWN);
				break;
			case R.id.delivery:
				r.setType(DELIVERY);
				break;
			}
			model.add(r);//①
		}
	}

问题是,点击存储之后,在如果①处采用的是adapter.add(r);

那么ListView里面展示出来的item全都是最后存进去的那个,而且在点击item之后,从model里面输出来的内容也都是一样的,

如果①处采用的是model.add(r);

那么ListView里面展示出来的item是正确的,刚好是你存储的内容的顺序,但是点击item之后,从model里面读取出来的内容跟上面一样,全都是最后存进去的数据,

 

想来想去也没怎么弄明白,最后我把②那行代码放到了onClick里面定义,这样之后不管①出用哪种方式,显示和输出的结果都是正确的.

暂时想到的就是在②处定义的r可能model里面之前加入的数据都覆盖了,但是还是有点糊涂,先记下这么个印象,望高手赐教.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121431.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • jmeter聚合报告和汇总报告有什么区别_jmeter报告分析

    jmeter聚合报告和汇总报告有什么区别_jmeter报告分析Jmeter的聚合报告参数详解:#在执行前,需要设置好一个csv空文件,将执行结果刷到该文件中,方便演示各参数实例计算值,导出的报告示例如下#Label:就是请求名称#Samples:总线程数,值=线程数*循环次数Average:单个请求的平均响应时间,值=总运行时间/发送到服务器的总请求数,截图中的值是这么计算出来的>login:(6+15)/2=…

    2022年10月23日
  • idea2021.7.15版激活码【中文破解版】[通俗易懂]

    (idea2021.7.15版激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

  • c#中Invoke方法

    c#中Invoke方法invoke方法的初衷是为了解决在某个非某个控件创建的线程中刷新该控件可能会引发异常的问题。说的可能比较拗口,举个例子:主线程中存在一个文本控件,在一个子线程中要改变该文本的值,此时会有可能引发异常。为了避免该问题,需要在子线程中使用invoke方法来封装刷新文本内容的函数。Invoke或者BeginInvoke去调用,两者的区别就是Invoke会导致工作线程等待,而BeginIn

  • github邮箱验证不了_为什么github注册不成功

    github邮箱验证不了_为什么github注册不成功要使用github必须先注册个github账号,注册之后会有一个邮箱验证的步骤需要做但是如果你使用126,163或者其它的一些免费邮箱,极有可能是收不到邮箱的,这个就麻烦了不过,qq邮箱目前是可以使用的,         不过也可能出现收不到的情况,那就换个qq邮箱再试,         如果还不行,换个时间段再试;   

  • C#中什么是泛型

    C#中什么是泛型参考视频c#教程泛型集合与非泛型集合最大的区别在于,泛型集合,不需要进行装箱和拆箱的操作。如集合元素为值类型,通常泛型集合要优于非泛型集合,并优于从非泛型集合派生出来的类型,泛是广泛的意思,而型是数据类型。这里的泛型可以理解为应用广泛的数据类型。为了提高性能及维护类型安全,一般最好采用泛型集合。如果两个类的内容完全一样,只是处理的数据类型不同。那么,采用泛型是一个不错的选择。泛型类用于封装不是特定于具体数据类型的操作,通常用于集合。诸如从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存

  • 通过SOCKS代理渗透整个内网

    通过SOCKS代理渗透整个内网通过SOCKS代理渗透整个内网1.背景经过前期的渗透工作,我们现在已经成功找到了web站点的漏洞,并且获得了一个普通的webshell,现在准备用菜刀去连接它。注意:本次环境在本地搭建,假设现在一无所知,这样更加真实。2.对web服务器提权2.1获取漏洞信息获取到webshell后使用菜刀连接,查看权限是apache,系统是redhat6.5。上传linux.sh到…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号