کار با لیست در اندروید – نحوه نمایش لیست در اندروید
در برنامه نویسی، لیست یک ساختار داده است که اجازه می دهد تعدادی از عناصر مرتبط را به صورت ترتیبی ذخیره کنیم، لیست ها می توانند متغیر های مختلفی از جمله اعداد، رشته ها، اشیاء (objects) و … را در خود نگهداری کنند، اجزای لیست به صورت پیوسته به هم قرار گرفته و به وسیله یک اشاره گر (pointer) به اولین عنصر لیست دسترسی دارند، پس از این که به طور کوتاه و مختصر در مورد لیست توضیح دادیم، در ادامه کامل تر و دقیق تر به لیست در اندروید می پردازیم.
لیست در اندروید
هر چند احتمالا می دانید که منظور از لیست در اندروید تنها مربوط به اندروید نمی شود، پایه برنامه نویسی در هر زبانی به یک شکل است و ما در این مقاله از این عبارت به عنوان کلمه کلیدی مقاله استفاده می کنیم.
تفاوت آرایه و لیست در برنامه نویسی
یکی از سوالات رایج در مورد لیست این است که چه تفاوتی با آرایه ها دارد، قبل از این که در مورد تفاوت لیست در اندروید و آرایه ها توضیح بدهیم، توضیح کوتاهی در مورد آرایه ها شرح می دهیم.
آرایه در برنامه نویسی یک ساختار داده است که اجازه می دهد چند مقدار یا عنصر مرتبط را در یک مجموعه به صورت ترتیبی ذخیره کنیم، هر عنصر در آرایه با یک اندیس یا شماره گذاری مخصوص به خود مشخص می شود که از ۰ تا (تعداد عناصر – ۱) است، برای دسترسی به هر عنصر، کافی است شماره گذاری آن را به عنوان اندیس آرایه استفاده کنیم.
و اما تفاوت لیست و آرایه:
- طول ثابت و مشخص:
آرایه دارای طول ثابتی است که در زمان تعریف تعیین می شود و نمی تواند در حین اجرای برنامه تغییر کند، اما لیست دارای طول متغیری است و می تواند به تعداد دلخواهی از عناصر تغییر کند. - دسترسی به عناصر:
در آرایه ها می توان با استفاده از اندیس (شمارهگذاری) به عناصر دسترسی کرد، مانندarr[0]
برای دسترسی به اولین عنصر. اما در لیست ها از اشارهگر ها استفاده می شود که برای دسترسی به عناصر بهترین حالت استفاده، هر عنصر به عنوان یک شیء دارای اشاره گر به عنصر بعدی و قبلی است. - اندازه قابل تغییر:
در لیست ها می توان به سادگی عناصر جدیدی را اضافه یا حذف کرد و طول لیست به طور پویا تغییر می کند، اما در آرایه ها، طول مشخص است و در صورت اضافه کردن عناصر بیشتر از طول تعیین شده، باید آرایه جدیدی با طول بیشتر ایجاد کنید و عناصر را از آرایه اولیه به آرایه جدید منتقل کنید.
نحوه نمایش لیست در اندروید
منظور از نحوه نمایش لیست در اندروید، این است که با استفاده از چه المان هایی می توان لیست را در اندروید نمایش داد.
در اندروید، می توانید لیست ها را با استفاده از اجزای UI مختلفی نمایش دهید، برخی از اجزا و روش ها برای نمایش لیست ها در اندروید عبارتند از:
- RecyclerView:
ریسایکلرویو یکی از قدرتمند ترین اجزای UI در اندروید است که برای نمایش لیست ها و داده های بزرگ و پیچیده مورد استفاده قرار می گیرد، این اجزا بهبود کارایی و مدیریت لیست ها را ارتقا می دهند و کار با لیست ها را ساده تر می کنند. - ListView:
لیست ویو یک المان اساسی در اندروید برای نمایش لیست ها است، این المان به سادگی از لیست های معمولی تا لیست های چندسطحی (Nested ListView) پشتیبانی می کند. - GridView:
گریدویو برای نمایش لیست ها به صورت شبکه ای استفاده می شود، این اجزا برای نمایش داده ها به صورت شبکه ای مثل تصاویر یا داده های مختلف بسیار مناسب هستند. - Spinner:
اگر لیست ها به عنوان یک لیست انتخاب کننده (DropDown) مورد استفاده قرار می گیرند، از اجزای Spinner استفاده می شود، این اجزا برای انتخاب یک آیتم از بین لیست ها مناسب هستند.
در واقع هر کدام از این اجزا برای لیست ها به کار می روند، اما به شکل ها و حالات مختلف که هر کدام کاربرد خاص خود را دارند.
در اندروید، برای نمایش لیست ها با استفاده از چند المان بالا که معرفی کردیم، باید از Adapter ها استفاده کنید، Adapter یک اجزاء مهم در برنامه نویسی اندروید است که مسئول نمایش داده ها در اجزاء نمایشی است، Adapter واسطی بین داده ها و نمایش داده ها در اجزاء UI (مانند RecyclerView یا ListView) ایجاد می کند، در ادامه ی مقاله ی لیست در اندروید به نحوه استفاده از آداپتر میپردازیم.
نحوه استفاده از Adapter ها به صورت خلاصه به این شکل است:
- تعریف کلاس Adapter:
ابتدا باید یک کلاس Adapter ایجاد کنید که از کلاس های از پیش تعریف شده (مانند ArrayAdapter برای ListView و Spinner) یا سفارشی سازی شده باشد. این کلاس Adapter باید اطلاعات مورد نیاز برای نمایش لیست را داشته باشد. - پیاده سازی متدهای اجزاء Adapter:
در کلاس Adapter، متدهایی مانندgetCount()
،getItem()
وgetView()
باید پیاده سازی شوند. این متد ها مسئول برگرداندن تعداد عناصر لیست، داده ها مربوط به عنصر مشخص و نمایش عناصر لیست در اجزاء UI هستند. - اتصال Adapter به اجزاء نمایشی:
بعد از ایجاد کلاس Adapter و پیادهسازی متدهای آن، باید آن را به اجزاء نمایشی (مانند RecyclerView یا ListView) متصل کنید. این کار با تنظیم Adapter بر روی اجزاء نمایشی انجام می شود.
برای مثال، نمونه ای از استفاده از Adapter در RecyclerView را در ادامه قرار می دهیم:
// تعریف کلاس Adapter public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> data; public MyAdapter(List<String> data) { this.data = data; } // پیادهسازی متد getCount @Override public int getItemCount() { return data.size(); } // پیادهسازی متد onCreateViewHolder @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } // پیادهسازی متد onBindViewHolder @Override public void onBindViewHolder(ViewHolder holder, int position) { String item = data.get(position); holder.textView.setText(item); } // کلاس ViewHolder برای نگهداری اجزاء نمایشی public static class ViewHolder extends RecyclerView.ViewHolder { public TextView textView; public ViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.text_view); } } } // استفاده از Adapter public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private List<String> dataList = new ArrayList<>(); private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // تنظیم دادهها for (int i = 1; i <= 10; i++) { dataList.add("آیتم " + i); } // تنظیم Adapter adapter = new MyAdapter(dataList); // تنظیم RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); } }
در این مثال، کلاس MyAdapter
برای نمایش داده ها در RecyclerView تعریف شده است و ما از آن برای نمایش لیست از رشته ها در اکتیویتی استفاده کرده ایم، در اینجا R.layout.item_layout
یک طرح بندی مورد استفاده برای نمایش هر آیتم از لیست است. همچنین از LinearLayoutManager
برای مدیریت نمایش لیست در RecyclerView استفاده شده است.
در نهایت از این که تا انتهای مقاله ی لیست در اندروید از نوری آکادمی با ما همراه بودید سپاس گزاریم.