تغییر مقدار یک عنصر، در یک لیست آرایه ای (ArrayList)، در برنامه نویسی اندروید
فرض کنید که یک لیست آرایه ای (ArrayList) با نام myList داریم که دارای تعدادی عنصر از نوع رشته (string) است و قصد داریم که مثلا مقدار عنصر ششم آن را تغییر بدهیم، برای این منظور، کدهای زیر را می نویسیم (چون شماره اندیس عناصر از 0 شروع می شود بنابراین باید برای عنصر ششم، اندیس 5 را بگذاریم) :
همان طور که مشاهده می کنید، از روش set استفاده کرده ایم.
دقت کنید که این عنصر، باید قبلا مقداردهی شده باشد، در غیر این صورت، یک خطا ایجاد شده و اجرای برنامه اندروید، متوقف می شود. برای درک بهتر این موضوع، به نکته زیر توجه کنید :
به کد زیر توجه کنید، این کد باعث ایجاد خطا و بسته شدن برنامه اندروید خواهد شد :
myList.set(5, "newString");
اما این پرسش مطرح است که دلیل ایجاد خطا چیست، تنها عملیاتی که انجام داده ایم، این است که عنصر ششم آرایه را مقداردهی کرده ایم (شماره عناصر از 0 شروع می شود، بنابراین اندیس 5 متناظر با عنصر ششم لیست آرایه ای است). ایجاد خطا به این دلیل است که در خط اول کدها، تنها ظرفیت (capacity) لیست آرایه ای (ArrayList) را مشخص کرده ایم، نه اندازه (size) آن را. در واقع، لیست آرایه ای (ArrayList) که ساخته ایم، خالی (empty) می باشد.
اگر می خواهیم که حتما عنصر ششم لیست آرایه ای (ArrayList) را مقدار دهی کنیم، می توانیم کدهای زیر را بنویسیم :
for (int i = 0; i < 10; i++) {
myList.add("");
}
myList.set(5, "newString");
در این کدها، ابتدا با روش add ، تعداد 10 عنصر را به لیست آرایه ای (ArrayList) افزوده ایم که همگی آنها، برابر رشته (string) تهی می باشند. سپس عنصر ششم را برابر رشته (string) مورد نظرمان قرار داده ایم.
بد نیست این نکته را یادآوری کنیم که اگر مجبور نیستید که حتما از لیست آرایه ای (ArrayList) استفاده کنید، می توانید مقادیر مورد نظرتان را در یک آرایه از رشته ها (string) ذخیره کنید (یا آرایه ای از هر نوع که می خواهید، مثلا Integer و ...). همانند کد زیر :
all_strings [5] = "newString";
مشاهده می کنید که اگر یک آرایه از رشته ها (string) داشته باشیم، می توانیم هر عنصر دلخواه از آن را مقداردهی کنیم و خطایی هم ایجاد نخواهد شد.