作者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