روش setOnItemClickListener برای تعیین کدهایی که هنگام اشاره بر روی item ها باید اجرا شوند، به کار می رود. بنابراین (و البته با توجه به کدی که در آن نوشته اید)، ربطی به تعداد item ها ندارد. شما باید ببینید که هنگام نسبت دادن Adapter به ListView ، چکونه تعداد item ها را مشخص کرده اید. تعداد item ها معمولا بر اساس یک آرایه یا لیست آرایه ای که Adapter دریافت می کند، تعیین می شود.
مثلا کلید زیر را ببینید :
کلید شماره 843
در آن، ابتدا آرایه ای به صورت زیر تعریف شده :
بعد هنگام تعیین Adapter ، آن آرایه است که تعداد item ها را مشخص می کند (و همچنین عنوان های آنها را) :
و کدهای Adapter :
بنابراین بر اساس توضیحات بالا، شما در کدهای خود ببینید که Adapter را چگونه تعریف کرده اید و آرایه یا لیست آرایه ای که به آن می دهید، دارای چه تعداد item است.
مثلا کلید زیر را ببینید :
کلید شماره 843
در آن، ابتدا آرایه ای به صورت زیر تعریف شده :
کد پیاچپی:
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"
};
بعد هنگام تعیین Adapter ، آن آرایه است که تعداد item ها را مشخص می کند (و همچنین عنوان های آنها را) :
کد پیاچپی:
setListAdapter(new MyAdapter(this,
android.R.layout.simple_list_item_1,
R.id.textView1,
my_items));
و کدهای Adapter :
کد پیاچپی:
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list_item, parent, false);
String stringName = "string_key_" + String.valueOf(position+1);
int string_res_ID = getResources().getIdentifier(stringName,"string",getPackageName());
String my_string = getResources().getString(string_res_ID);
TextView tv = (TextView) row.findViewById(R.id.textView1);
tv.setText(my_string);
String imageName = "key_" + String.valueOf(position+1);
int image_res_ID = getResources().getIdentifier(imageName,"drawable",getPackageName());
ImageView iv = (ImageView) row.findViewById(R.id.imageView1);
iv.setImageResource(image_res_ID);
return row;
}
}
بنابراین بر اساس توضیحات بالا، شما در کدهای خود ببینید که Adapter را چگونه تعریف کرده اید و آرایه یا لیست آرایه ای که به آن می دهید، دارای چه تعداد item است.
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.