作者THKLuga (流河涛)
看板AndroidDev
标题[问题] ArrayList<String[]>的Add用法
时间Wed Oct 23 22:30:44 2013
不知道这个问题该在哪问,不过是在写APP的时候碰上的
所以发在这个版来请教几位前辈
我想要一个ArrayList来存放字串阵列
所以我宣告的地方用
private ArrayList<String[]> AL1;
然後在onCreate里面New出来
AL1=new ArrayList<String[]>();
接着我要把一个String阵列存进去,我把这段写在OnClickListener里
AL1.add(Info);
Info是一个字串阵列,
接着在下面想把AL1里的一个值印出来,用一个回圈
for(int i=0;i<AL1.size();i++)
{
String[] Temp=AL1.get(i);
Msg.append(Temp[3]+"\n");
}
出问题的地方是,我每次Click都会改变Info的值
可是每次储存会把整个ArrayList里面所有的值
都会改成最後一次Click的时候Info的值
如果我把private ArrayList<String[]> AL1; 改成
private ArrayList<String> AL1;
然後再Add之前把Info的值先存成一个字串
每次储存都会正常的加上去,而不会改掉整个ArrayList
我用Log看过执行时的AL1第一个元素,的确会因为每次Click改变
我猜我的ArrayList的用法可能错误,小弟不才,接触java没很久
不清楚问题在哪里,只能请教版上前辈
先在这说声感谢 OTZ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.105.52.217
1F:推 aiweisen:arraylist 本身不就是个阵列的样子吗? 10/23 22:42
2F:→ aiweisen:还是你的info 试看看用map的key value方式? 10/23 22:46
3F:→ THKLuga:是ArrayList里面不能放另一个阵列的意思吗.... 10/23 22:48
4F:→ THKLuga:我的确是参考map的方式把阵列给丢进去,看来这用法出问题 10/23 22:49
5F:→ THKLuga:用字串阵列为了储存方便...我改用Map试试看 10/23 22:53
6F:→ THKLuga:用了map的方式可以跑了 看来是不能放阵列 10/23 23:07
7F:推 crazyma:ArrayList里应该是可以在放另一个阵列 10/24 00:30
8F:→ crazyma:个人觉得应该是你没提到的部份写错了 10/24 00:31
9F:→ crazyma:BTW, 虽然不知你目的为何, 但这样写感觉有点太复杂了 10/24 00:33
10F:→ THKLuga:复杂....怎麽说呢...? 10/24 01:13
11F:→ THKLuga:我的List是要放棒球记录里球数格的内容在加上三个参数 10/24 01:19
12F:→ THKLuga:我其他地方没碰到那个List....持续搞不懂 只好跳过= = 10/24 01:21
13F:推 jerrysky:我记得~array(string[])是记忆体位置不是值~所以你改的是 10/24 02:01
14F:→ jerrysky:改道他的记忆体位置~整段都改掉了!你可以用 10/24 02:02
15F:→ jerrysky:ArrayList<Arraylist<String>>达到你要的功能 10/24 02:03
16F:→ THKLuga:感谢楼上大大 10/24 05:03
17F:推 LPH66:jerrysky 正解, 你可以注意看你存进去的每个阵列都是同一个 10/24 09:00