سلام.
کلید زیر، چگونگی ساخت یک ListView سفارشی را شرح داده است :
کلید شماره 843
اکنون بنده بخش هایی که مرتبط با نیازهای شما است را ذکر می کنم.
در کدها، یک آرایه (Array) به شکل زیر تعریف شده :
کد پیاچپی:
public String[] my_items = {"key_1",
"key_2",
"key_3",
"key_4",
"key_5",
"key_6",
"key_7",
"key_8",
"key_9",
"key_10",
"key_11",
"key_12",
"key_13",
"key_14",
"key_15",
"key_16",
"key_17",
"key_18",
"key_19",
"key_20"
};
این آرایه، تعداد item های ListView را تعیین کرده است، بنابراین شما باید 13 عنوان متناظر با 13 تا item مورد نظرتان را در آن تعریف کنید.
بعد آن را به Adapter ای که تعریف کرده ایم، دادیم (یعنی در این مرحله است که ListView از روی این آرایه، متوجه می شود که باید چند تا item بسازد) :
کد پیاچپی:
setListAdapter(new MyAdapter(this,
android.R.layout.simple_list_item_1,
R.id.textView1,
my_items));
برای تغییر عنصرهای تعریف شده در item های ListView ، باید فایل xml مربوط به تعریف لایه گرافیکی item ها را باز کرده و عنصرها را مطابق نیاز خود تغییر بدهید. بعد باید کدهای Adapter تعریف شده برای ListView (با نام MyAdapter) را در Activity ویرایش کنید (مطابق با عنصرهای موجود در item ها).
برای قابل کلیک بودن کل item ، کدهای زیر برای ListView نوشته شده است :
کد پیاچپی:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
Intent i = new Intent(getApplicationContext(), SecondActivity.class);
number_of_keys = String.valueOf(position+1);
i.putExtra("key_number", number_of_keys);
startActivity(i);
}
});
که در آن، باید کد مربوط به رفتن به Activity مورد نظرتان را ذکر کنید. در همین کد بالا، رفتن به Activity جدید و همچنین ارسال شماره متناظر با item به آن Activity ذکر شده است (با putExtra).
سپس در Activity بعدی، شماره متناظر با item کلیک شده (اشاره شده) را دریافت می کنیم (و مقادیر و منابع مورد نظرمان را متناسب با شماره دریافت شده، برای عنصرهای آن Activity قرار می دهیم) :
کد پیاچپی:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String my_key_number = extras.getString("key_number");
String my_message = "you pressed the item number " + my_key_number + " in ListView";
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(my_message);
}