Android中list.add问题

============问题描述============

下面的代码一直运行好好的,却突然出问题了。listAll.add本应该加进去每个map2,但是输出却变成加入了相同的map2。之前一直运行好好的,这是怎么回事啊?

listAll.clear();

					for (int i = 0; i < str.length / 8; i++) {

						System.out.println("i = " + i);

						map2.put("user_name", list.get(i * 8));

						map2.put("flag", list.get(i * 8 + 1));

						map2.put("object_words", list.get(i * 8 + 2));

						map2.put("my_words", list.get(i * 8 + 3));

						map2.put("date", list.get(i * 8 + 5));

						// 如果用户没有传照片,map2中传的imageUrl就为空

						if (!list.get(i * 8 + 4).equals(" ")) {

							String imageUrl1 = "http://10.0.2.2:8080/BBStuServlet/"

									+ list.get(i * 8 + 4);

							String imageUrl = imageUrl1.replace(" ", "");

							map2.put("imageUrl", imageUrl);

						} else {

							map2.put("imageUrl", "");

						}

						System.out.println("map2 = " + map2);

						listAll.add(map2);

						System.out.println("listAll = " + listAll);

下面这张图片是输出,listAll里面的值全是一样的,之前还运行正常,请前辈指教,感激不尽。

============解决方案1============

你把map2的实例化放在for循环里面(也就是每次循环都new一个map2),应该没问题了

============解决方案2============

变量map2的值没有改变,所以你每次add的都是同一个对象,每次通过put修改的也是同一个对象。

应该在每个循环中new一个新对象

for (int i = 0; i < str.length / 8; i++) {

	map2 = new HashMap<String, String>();

	...

}
时间: 2024-10-15 12:52:44

Android中list.add问题的相关文章

android中menu.add()的使用说明

在menu.add()有四个参数,开始不懂其理.看过后记于此,以备查阅. 任何一款软件都少不了对"菜单"的使用.在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,复写onCreateOptionsMenu 和 onOptionsItemSelected这两个方法.举例如下: java代码: @Override public boolean onCreateOptionsMenu(Menu menu){ //条用基类的

谈谈-Android中的接口回调技术

Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James对Android接口回调技术的理解(结合前人的知识和自己的实践). 使用一个比喻很形象地说明:客户端有个疑问打电话请教服务端,但服务端无法现场给出解答,相互之间约定:服务端一旦有答案,使用电话的方式反馈给客户端. 以上有三个主体:客户端.服务端和接口(方式). 接口回调的原理框图说明: Demo界面

浅谈android中仅仅使用一个TextView实现高仿京东,淘宝各种倒计时

今天给大家带来的是仅仅使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.最近公司一直加班也没来得及时间去整理,今天难得休息想把这个分享给大家,只求共同学习,以及自己后续的复习.为什么会想到使用一个TextView来实现呢?因为最近公司在做一些优化的工作,其中就有一个倒计时样式,原来开发的这个控件的同事使用了多个TextView拼接在一起的,实现的代码冗余比较大,故此项目经理就说:小宏这个就交给你来优化了,并且还要保证有一定的扩展性,当时就懵逼了.不知道从何处开始

Java/Android中的优先级任务队列的实践

版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 刚刚把公司的活干完,去群里水,有几个小伙伴问我怎么实现队列,于是乎我来写一篇吧.本篇文章适用于Java和Android开发者,会从实现一个最简单的队列过渡到实现一个带有优先级的队列,保准你可以掌握基本的队列原理. 队列的基本理解 用生活中的一个情景来举个栗子,前段时间很火爆的电视剧<人民的名义>中有一个丁义珍式的窗口大家应该都知道了,我们不说<人民的名义>也不说丁义珍,我们来说说这个办

android 中处理崩溃异常并重启程序

有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在Android中怎样捕获程序的异常崩溃,然后进行一些必要的处理或重新启动 应用这个问题困恼了我很久,今天终于解决了该问题,写篇文章记录一下. 首先捕获程序崩溃的异常就必须了解一下Java中UncaughtExceptionHandler这个接口,android沿用了此接口,在android API中: 通过实现此接口,能够处理线程被一个无法捕捉的异常所终止的情况.如上所述的情况,handler将会报告线程终止和不明

Android中,如何提升Layout的性能?

Layout 是 Android 应用中直接影响用户体验的关键部分.如果实现的不好,你的 Layout 会导致程序非常占用内存并且 UI 运行缓慢.Android SDK 带有帮助你找到 Layout 性能问题的工具. 主题一:优化Layout层级 一个常见的误区是,用最基础的Layout结构可以提高Layout的性能.然而,因为程序的每个组件和Layout都需要经过初始化.布局和绘制的过程,如果布局嵌套导致层级过深,上面的初始化.布局和绘制操作就更加耗时.例如,使用嵌套的LinearLayou

【转】Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

原文网址:http://embed.21ic.com/software/android/201403/31603.html 1 :Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) . 今天学习了Spinner组件,使用Spinner相当于从下拉列表中选择项目,下面演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现) (一):使用ArrayAdapter进行适配数据: ①:首先定义一个布局文件: android:

从源码角度分析Android中的Binder机制的前因后果

前面我也讲述过一篇文章<带你从零学习linux下的socket编程>,主要是从进程通信的角度开篇然后延伸到linux中的socket的开发.本篇文章依然是从进程通信的角度去分析下Android中的进程通信机制. 为什么在Android中使用binder通信机制? 众所周知linux中的进程通信有很多种方式,比如说管道.消息队列.socket机制等.socket我们再熟悉不过了,然而其作为一款通用的接口,通信开销大,数据传输效率低,主要用在跨网络间的进程间通信以及在本地的低速通信.消息队列和管道

Android中客户端请求服务器端的方式讲解(一)附源码

Android中客户端请求服务器端的两种方式:Post方式和Get方式 在这里不直接赘述了,直接上源码如下: (1).Post的方式: /** * Post的请求方式 * * @param model * 请求序号 * @param paramList * 客户端请求的数据参数列表 * @return */ public JSONObject doPost(int model, List<NameValuePair> paramList) { try { // 客户端向服务器发送请求的数据 L