فهرستها (Lists)
تماشای برخط [لینک مستقیم] فیلم آموزشی «فهرستها»
زیر نویس انگلیسی [English Subtitle]
دریافت نسخهی pdf این آموزش [719 کیلوبایت]
یکی از مواردی که تو خیلی از برنامه می بینید فهرست هست. فهرست در واقع جایی به کار میره که شما میخواید از بین یه سری گزینه تو فهرست یکی رو انتخاب کنید مثه انتخاب نام کشور خودتون در بین همه کشورها یا اینکه یه سری اطلاعات رو قراره تو قالب یک فهرست مشاهده کنین.
۱.خوب برای شروع یه پروژه اندروید بسازید. (تصویر متحرک ساختن پروژه) و در فولدر res روی فولدر values راست کلیک کنید و New بعد هم Other.
حالا از زیرساخه Android روی Android XML Values Files کلیک کنید و یه اسمی براش بذارید. من اسمشو میذارم daneshgah.
۲.فایلی که ساختید براتون باز میشه، روی زبانهی daneshgah.xml کلیک کنید تا خود فایل رو براتون باز کنه و این آرایهی رشتهها رو توش وارد کنید. ما قراره این آرایه رو داخل یک فهرست قرار بدیم.
۳.خوب به فایل MainActivity.java (در src) میریم، میبینیم که به صورت پیشفرض کلاس اصلیمون توسط کلاس فعالیت (activity) توسعه داده شده، اگر ما در یک فعالیت بخوایم فقط از فهرستها استفاده کنیم بهتره به جای کلاس فعالیت از کلاس فعالیتفهرستی یا ListAcrivity استفاده کنیم، پس خط اولمون این شکلی میشه:
public class MainActivity extends ListActivity {
وقتی کد رو تغییر میدید زیر کلمه ListActivity خط قرمز میکشه روش ctrl+1 بزنید و گزینه (import 'ListActivity' (android.app رو بزنید.
۴.حالا به فایل activity_main.xml میریم (در res->layout) و از ستون سمت چپ (Palette) زیرشاخه composite برید و نمایفهرستی (ListView) رو روی صفحه بکشید و رها کنید. باید به فهرستمون یه شناسه خاص بدیم که بتونیم تو فعالیتفهرستیمون بهش ارجاع بدیم. چون در هر فعالیت فهرستی فقط میتونیم شناسه مربوط به یک فهرست رو بدیم. زبانه activity_main.xml رو از نوار پایین انتخاب کنید و دنبال خطی بگردید که با <ListView شروع شده باشه. قسمت اولش نوشته "android:id="@+id/listView1 به کد زیر تغییرش بدید.
android:id="@android:id/list"
۵.به فایل MainActivity.java میریم. برای اینکه مقادیر دلخواهمون رو به فهرست وارد کنیم، باید از تابع وفقدهندهفهرست ListAdapter استفاده کنیم. در واقع وفقدهنده مولفهایه که داده مورد نظر رو میگیره و برای نمایش، شیمون رو وفق میده. خوب از تابع ایجادوفقدهندهفهرست (setListAdapter) استفاده میکنیم و برای ورودیش یه نمونه جدید از آرایهیوفقدهنده (ArrayAdapter) میسازیم. کاری که این آرایه میکنه اینه که آرایهای از اطلاعات رو میگیره تا بتونه در فهرست ما نشون بده. برای درست کردن آرایهیوفقدهنده سازندههای مختلفی وجود داره، سازندهای که استفاده میکنید بسته به نوع اطلاعاتی داره که برای فهرستتون تهیه کردید. خوب مثلا اگه یه فهرست سفارشی درست کردیم که فقط یه متن معمولی نیست، میتونیم از شناسه منبع اون که به صورت نمایمتنی (TextView) ذخیره شده استفاده کنیم. ولی چون ما اینجا میخوایم یه متن ساده رو به فهرستمون بفرستیم از این سازنده استفاده می کنیم که به عنوان ورودی ۳ تا مورد رو می خواد: محتوا، شماره منبع (که در اینجا همون صفحهبندیه) و شمارهمنبعنمایمتنی.
ArrayAdapter (Context context, int resource, int textViewResourceId)
۶.برای محتوا کافیه کلمه this رو بنویسیم به معنی اینکه برای محتوا به همین فعالیتفهرستی ارجاع بشه، نوع این اطلاعات هم آرایهای از رشته است که از همون فایل xml ای مییاد که ابتدای این آموزش ساختیم. برای منبع هم چون یه منبع خاص نساختیم میتونیم از منابع داخلی خود اندروید استفاده کنیم. android.R.layout.simple_list_item_1 فقط یه نمایمتنی ساده است، اگه می خواستیم از یه فهرست سفارشی و خاص استفاده کنیم باید خودمون نمایفهرستی اش رو میساختیم. (که در آموزش بعد یادخواهیم گرفت)
۷.برای گرفتن شماره منبع نمایمتنی از تابع getResources استفاده میکنیم، این تابع تمامی منابع موجود در پروژهمون رو تهیه میکنه.بعد تابع تهیهیآرایهیرشتهای (getStringArray) رو صدا میزنیم و به عنوان ورودی باید شناسه آرایهی رشتهای که تو فایل daneshgah.xml ساختیم رو بدیم: (بعد زیر ArrayAdapter خط قرمز میکشه روش ctrl+1 رو بزنید و گزینه import رو انتخاب کنید)
setListAdapter (new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, getResources ().getStringArray(R.array.daneshgah)));
۸.تمام این کارا ممکنه یه کمی پیچیده به نظر برسه ولی وقتی علت هر قطعه کد رو متوجه بشید براتون آسون میشه، تو این آموزش یاد گرفتیم که چطور یه فهرست ساده درست کنیم، تو آموزش بعدی یاد میگیریم که چطور فهرست سفارشی (customise list) درست کنیم.
این هم نمایی از همین فهرستی که درست کردیم در شبیهساز:
نکته : اگر کلمات فارسی به صورت جداجدا در شبیه ساز نشون داده شد، باید شبیهسازتون از نسخه Android 3.0 بالاتر باشه (قسمت Target Name در Android Virtual Device Manager)
مطالب خوب هستند
با تشکر