ساخت لیست (فهرست)، با استفاده از ListView ، در برنامه نویسی اندروید
در این آموزش قصد داریم که چگونگی ساخت یک لیست (فهرست) ، با استفاده از ListView در برنامه نویسی اندروید را شرح بدهیم. برای این منظور، یک پروژه می سازیم که اولین صفحه آن (activity اصلی)، به صورت یک لیست باشد.
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام Kelidestan.com بسازید (نام package را برابر com.kelidestan.example انتخاب کنید. نام activity اصلی را برابر MainActivity انتخاب کنید و فایل xml متناظر آن را هم، activity_main انتخاب کنید).
قرار است که 5 نام ماشین را درون لیست خود داشته باشیم و باید این نام ها را در یک فایل ذخیره کنیم. بنابراین، یک فایل xml با نام cars.xml می سازیم و در آن، نام های مورد نظرمان برای لیست را ذخیره ممی کنیم. این فایل را درون فولدر values می سازیم :
کدهای فایل cars.xml را به صورت زیر می نویسیم :
<resources>
<string-array name="names">
<item name="name_1">پراید</item>
<item name="name_2">پژو 405</item>
<item name="name_3">پژو 206</item>
<item name="name_4">پژو پارس</item>
<item name="name_5">سمند</item>
</string-array>
</resources>
اکنون باید فایل activity_main.xml را تغییر بدهیم. تمامی عناصر درون آن را حذف می کنیم و سپس، از منوی Composite ، گزینه ListView را انتخاب کرده و به درون صفحه گرافیکی فایل می کشیم. سپس اندازه ListView را بزرگ می کنیم تا کل صفحه گرافیکی را پر کند.
پس از این تغییرات، کدهای فایل activity_main.xml به صورت زیر خواهد بود :
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</ListView>
</LinearLayout>
به این بخش از کدها توجه کنید :
باید آن را به صورت زیر تغییر دهیم :
بنابراین درنهایت، کدهای فایل activity_main.xml به صورت زیر خواهد بود :
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</ListView>
</LinearLayout>
فایل MainActivity.java را باز می کنیم، کدهای آن به صورت زیر می باشد :
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
کدها را به صورت زیر تغییر می دهیم :
import android.os.Bundle;
import android.app.ListActivity;
import android.view.Menu;
import android.widget.ArrayAdapter;
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.names)));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
مهمترین تغییر، تغییر کلاس Activity به ListActivity می باشد (تقریبا در ابتدای کدها). همچنین package مربوط به آن را import کرده ایم.
با اجرای برنامه اندروید ساخته شده، لیست به صورت زیر نمایش داده خواهد شد :
با سلام. از سایت بسیار خوبتون ممنونم.عالی هست. به جای carsباید کد nameرو نوشت.
سلام.
بله حق با شماست، بنده کدها را تصحیح کردم و عبارت cars به names تغییر داده شد (نام string-array تعریف شده در فایل cars.xml).
خیلی ممنون.
خیلی مفید و خوب بود
توی اندروید استدیو که کار نداد
سلام .اگر امکان دارد نحوه ی لینک شدن اکتیویتی ها به همدیگر رو آموزش بدهید .اینکه وقتی روی باتنی میزنیم وارد اکتیوتی بعدی شویم.ممنون.
سلام.
اگر صرفا می خواهید با اشاره بر روی یک دکمه (Button)، به یک Activity جدید برویم، کلید زیر را بخوانید :
اما اگر قصد دارید که با اشاره بر روی هر item (ردیف - row) از ListView به یک Activity جدید برویم (یا حتی ارسال مقدار متناظر با item به آن Activity)، کلید زیر را بخوانید :
سلام خسته نباشید
من میخام قسمت جستجو دربرنامه ام بسازم که درلیست ویوجستجو کنه و بعداز جستجو با انتخاب متن جستجوشده وارد اکتیویتی شه لطفا کمکم کنید من این پروژه در برنامه Aideکارمیکنم.
سلام من میخوام listview را جوری تعریف کنم که با کلیک روی هر آیتم به یه اکتیویتی دیگه برود و آهنگ اون آیتم را پخش کند و لطفا بگید که چطور به هر آیتم یک آهنگ اضافه کنم ممنون از سایت عالیتون.