看板 AndroidDev 關於我們 聯絡資訊
不知道這個問題該在哪問,不過是在寫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
aiweisen:arraylist 本身不就是個陣列的樣子嗎? 10/23 22:42
aiweisen:還是你的info 試看看用map的key value方式? 10/23 22:46
THKLuga:是ArrayList裏面不能放另一個陣列的意思嗎.... 10/23 22:48
THKLuga:我的確是參考map的方式把陣列給丟進去,看來這用法出問題 10/23 22:49
THKLuga:用字串陣列為了儲存方便...我改用Map試試看 10/23 22:53
THKLuga:用了map的方式可以跑了 看來是不能放陣列 10/23 23:07
crazyma:ArrayList裡應該是可以在放另一個陣列 10/24 00:30
crazyma:個人覺得應該是你沒提到的部份寫錯了 10/24 00:31
crazyma:BTW, 雖然不知你目的為何, 但這樣寫感覺有點太複雜了 10/24 00:33
THKLuga:複雜....怎麼說呢...? 10/24 01:13
THKLuga:我的List是要放棒球記錄裡球數格的內容在加上三個參數 10/24 01:19
THKLuga:我其他地方沒碰到那個List....持續搞不懂 只好跳過= = 10/24 01:21
jerrysky:我記得~array(string[])是記憶體位置不是值~所以你改的是 10/24 02:01
jerrysky:改道他的記憶體位置~整段都改掉了!你可以用 10/24 02:02
jerrysky:ArrayList<Arraylist<String>>達到你要的功能 10/24 02:03
THKLuga:感謝樓上大大 10/24 05:03
LPH66:jerrysky 正解, 你可以注意看你存進去的每個陣列都是同一個 10/24 09:00