سلام.
در ساختارهای شامل item ، مثل ListView و GridView ، باید View مربوط به هر item (ردیف) که در کدهای Adapter و در روش getView ذکر می شود ، به درستی تعیین شود.
منظورم بخش زیر از کدهای شما است :
احتمالا مشکل از همین موردی است که ذکر کردم (آنچه اطمینان داریم، این است که مشکل از کدهای روش getView می باشد).
یک مثال صحیح (البته برای ListView) را از کلید شماره 2961 ذکر می کنم (تفاوتی با GridView ندارد) :
ساختار آن را به دقت بررسی و با کد خود مقایسه کنید. منظورم بخش زیر است :
ببینید که به چه صورت View مربوط به هر item را ساخته است (در اینجا با نام row).
در ساختارهای شامل item ، مثل ListView و GridView ، باید View مربوط به هر item (ردیف) که در کدهای Adapter و در روش getView ذکر می شود ، به درستی تعیین شود.
منظورم بخش زیر از کدهای شما است :
کد پیاچپی:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
gridView = new View(mContext);
// gereftane laye az custom_adapter.xml
gridView = inflater.inflate(R.layout.list_animal, null);
TextView textView = (TextView) gridView.findViewById(R.id.textView1);
textView.setText(mThumbIds2[position]);
ImageView imageView = (ImageView) gridView.findViewById(R.id.imageView1);
imageView.setImageResource(mThumbIds[position]);
} else {
gridView = (View) convertView;
}
return gridView;
}
احتمالا مشکل از همین موردی است که ذکر کردم (آنچه اطمینان داریم، این است که مشکل از کدهای روش getView می باشد).
یک مثال صحیح (البته برای ListView) را از کلید شماره 2961 ذکر می کنم (تفاوتی با GridView ندارد) :
کد پیاچپی:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
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;
}
ساختار آن را به دقت بررسی و با کد خود مقایسه کنید. منظورم بخش زیر است :
کد پیاچپی:
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.list_item, parent, false);
}
ببینید که به چه صورت View مربوط به هر item را ساخته است (در اینجا با نام row).
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.