[問題] ArrayList<String[]>的Add用法

看板AndroidDev作者 (流河濤)時間10年前 (2013/10/23 22:30), 編輯推噓4(4013)
留言17則, 5人參與, 最新討論串1/1
不知道這個問題該在哪問,不過是在寫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

10/23 22:42, , 1F
arraylist 本身不就是個陣列的樣子嗎?
10/23 22:42, 1F

10/23 22:46, , 2F
還是你的info 試看看用map的key value方式?
10/23 22:46, 2F

10/23 22:48, , 3F
是ArrayList裏面不能放另一個陣列的意思嗎....
10/23 22:48, 3F

10/23 22:49, , 4F
我的確是參考map的方式把陣列給丟進去,看來這用法出問題
10/23 22:49, 4F

10/23 22:53, , 5F
用字串陣列為了儲存方便...我改用Map試試看
10/23 22:53, 5F

10/23 23:07, , 6F
用了map的方式可以跑了 看來是不能放陣列
10/23 23:07, 6F

10/24 00:30, , 7F
ArrayList裡應該是可以在放另一個陣列
10/24 00:30, 7F

10/24 00:31, , 8F
個人覺得應該是你沒提到的部份寫錯了
10/24 00:31, 8F

10/24 00:33, , 9F
BTW, 雖然不知你目的為何, 但這樣寫感覺有點太複雜了
10/24 00:33, 9F

10/24 01:13, , 10F
複雜....怎麼說呢...?
10/24 01:13, 10F

10/24 01:19, , 11F
我的List是要放棒球記錄裡球數格的內容在加上三個參數
10/24 01:19, 11F

10/24 01:21, , 12F
我其他地方沒碰到那個List....持續搞不懂 只好跳過= =
10/24 01:21, 12F

10/24 02:01, , 13F
我記得~array(string[])是記憶體位置不是值~所以你改的是
10/24 02:01, 13F

10/24 02:02, , 14F
改道他的記憶體位置~整段都改掉了!你可以用
10/24 02:02, 14F

10/24 02:03, , 15F
ArrayList<Arraylist<String>>達到你要的功能
10/24 02:03, 15F

10/24 05:03, , 16F
感謝樓上大大
10/24 05:03, 16F

10/24 09:00, , 17F
jerrysky 正解, 你可以注意看你存進去的每個陣列都是同一個
10/24 09:00, 17F
文章代碼(AID): #1IPzsNDF (AndroidDev)