ورود

View Full Version : مشکل کار با لیست آداپتور



sobhan1990
یک شنبه 29 اردیبهشت 1392, 10:30 صبح
سلام

توی کار کردن با لیست اداپتور دچار یه مشکلی شدم که هر کاریش میکنم به نتیجه نمیرسم!
همین کدهای لیست اداپتور توی یه کلاس دیگه کار میکنن ولی اینجا نه!
توی لوگ هم بررسی کردم و تا OrderAdapter End TAG جلو میره ولی دیگه جلو نمیره و با اینکه ترای کش گذاشتم برنامه فورس کلوز میشه! از دست این اکلیپس دارم خسته میشم!



public class ListAdapter extends BaseAdapter {

private LayoutInflater myInflater;
private List<Phonebook> list;

public ListAdapter(Context context) {
myInflater = LayoutInflater.from(context);

}

public void setData(List<Food> list) {
this.list = list;
}

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
try {
ViewHolder holder;
Log.i("OrderAdapter", "Start");
if (convertView == null) {
convertView = myInflater.inflate(R.layout.row_, null);
holder = new ViewHolder();

holder.Id = (TextView) convertView.findViewById(R.id.row__id);
holder.Name = (TextView) convertView.findViewById(R.id.row__Name);
holder.Tel = (TextView) convertView.findViewById(R.id.row__Tel);

holder.Id.setTypeface(MainActivity.typeface);
holder.Tel.setTypeface(MainActivity.typeface);
holder.Name.setTypeface(MainActivity.typeface);

convertView.setTag(holder);
Log.i("OrderAdapter", "End IF");
}
else
{
holder = (ViewHolder) convertView.getTag();
Log.i("OrderAdapter", "End Else");
}
holder.Id.setTag(list.get(position).GetID());
Log.i("OrderAdapter", "End TAG: " + list.get(position).GetID()+":"+list.get(position).GetName()+":"+list.get(position).GetTel());

holder.Id.setText(list.get(position).GetID());
Log.i("OrderAdapter", "End GETID");

holder.Name.setText(list.get(position).GetName());
Log.i("OrderAdapter", "End GETNAME");

holder.Tel.setText(list.get(position).GetTel());
Log.i("OrderAdapter", "End GETTel");

}
catch (Exception e)
{
Log.i("ERROR", e.toString);
}

return convertView;
}
static class ViewHolder {
TextView Id;
TextView Name;
TextView Tel;
}
}




توی لوگ بررسی کردم ست دیتا و ست اداپتور هم بدون مشکل اجرا میشن ولی توی کلاس لیست اداپتور گیر میکنه.

پیشاپیش ممنونم.

Modernidea
یک شنبه 29 اردیبهشت 1392, 13:43 عصر
سلام

وقتی برنامه با اینکه Try Catch گذاشتید باز هم Force Close میده، معنیش اینه که مشکل خارج از بلاک Try Catch است!

بهتره که Log Cat رو اینجا قرار بدید تا با هم بررسی کنیم ببنیم مشکل چی هست.

درضمن این مشکلات از Eclipse نیست! یا یک اشتباه منطقی است یا اشتباه نحوی. به این زودی ها نباید خسته بشید.
اگر مطلبی را که قصد پیاده سازی دارید، قبل از پیاده سازی کاملا مطالعه کنید و از نظر تئوری تقریبا مسلط بشید، موقع پیاده سازی کمتر به این مشکلات بر میخورید، هر چند من خودم هم متاسفانه این کار را معمولا نمیکنم و همین باعث به وجود آمدن خیلی مشکلات میشه.

موفق باشید.

sobhan1990
یک شنبه 29 اردیبهشت 1392, 14:55 عصر
سلام
توی لوگ تا دستور خط 56 اجرا میشه. یعنی توی لوگ دستور زیر اجرا میشه و در لوگ نوشته میشه ولی مابقی نوشته نمیشه:


Log.i("OrderAdapter", "End TAG: " + list.get(position).GetID()+":"+list.get(position). GetName()+":"+list.

Modernidea
یک شنبه 29 اردیبهشت 1392, 16:07 عصر
سلام

در LogCat خطای NullPointerException درج شده بود.
باید ببنید چه متغیر مقدار Null دارد که این مشکل پیش می آید.
احتمالا یکی از متغیر های موجود در خط Log.i("OrderAdapter", "End TAG: " + list.get(position).GetID()+":"+list.get(position). GetName()+":"+list.get(position).GetTel()); برابر Null است.

برای مطمئن شدن میتوانید از Break Point (http://www.vogella.com/articles/EclipseDebugging/article.html) استفاده کنید.

موفق باشید.

sobhan1990
یک شنبه 29 اردیبهشت 1392, 16:53 عصر
سلام

خیر اتفاقا هیچکدام نال نیست.
در لوگ هم مقدارشان وارد شده: End TAG: 1:Barg:10000

هر سه تاشون مقدار دارن.
در واقع خط 59 در لوگ چیزی نشون نمیده و خدس بنده اینه که خط 58 موجب این خطا میشه.
ولی متوجه دلیل خطا نمیشم و نمیتونم رفعش کنم.
دقیقا همین کد در یک کلاس اداپتور دیگه استفاده کردم و مشکلی نداره.

Nevercom
یک شنبه 29 اردیبهشت 1392, 17:06 عصر
خط ۶۵ کلاس MainActivity چی هست ؟
یه ایرادی تو این خط وجود داره

sobhan1990
یک شنبه 29 اردیبهشت 1392, 17:38 عصر
سلام
از کمک هاتون بسیار ممنونم.
مشکل حل شد.
فقط با اینکار:


Integer.toString(list.get(position).GetID())