آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل کرش (crash)کردن لیست ویو (listview)

سپهر  12 سال پیش  12 سال پیش
0 0

زمانی که من روی تب هام که هر کدوم شامل یک لیست ویو هستن چند بار مرتب تپ می کنم برنامه من کرش میکنه و ارور زیر رو میده

 05-25 11:58:18.571: E/AndroidRuntime(22454): FATAL EXCEPTION: main
05-25 11:58:18.571: E/AndroidRuntime(22454): Process: first_project, PID: 22454
05-25 11:58:18.571: E/AndroidRuntime(22454): java.lang.IllegalStateException:
The content of the adapter has
changed but ListView did not receive a notification. Make sure the content of your adapter is
not modified from a background thread, but only from the UI thread. Make sure your adapter
calls notifyDataSetChanged() when its content changes. [in ListView(2130968597, class
android.widget.ListView) with Adapter(class first_project.AdapterList)

ممنون میشم راهنمایی کنید

0 0
فکر کنم خطای logcat درست درج نشده!! (12 سال پیش)
0 0
این خطا، خطای log هست (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
+1 0

این قسمت داره به وضوح مشکل رو میگه :

The content of the adapter has changed but ListView did not receive a notification. Make sure the
content of your adapter is
not modified from a background thread, but only from the UI thread

محتوای آداپتور تغییر کرده ، اما روی لیست ویو اعمال نشده ، یعنی Notify نشده :|  در بخش دوم هم میگه ، مطمئن بشید که آداپتور از Thread UI ویرایش شده ، شاید شما در یک Thread دیگه ، این کار را انجام دادید ، که در این حالت باید از یک Handler استفاده کنید

0 0
همون منم چون نمیدونستم notify چیه پرسیدم ، یعنی چی notify نشده؟ باید چیکارش کنم؟میشه بیشتر توضیح بدی که handler چیه؟ (12 سال پیش)
پاسخ به سوال 
سپهر  12 سال پیش
0 0

مشکل حل شد باید آرایه رو یه بار clear میکردم چون هر بار که روی تب کلیک میکردم لیست ویو پر میشد و با زیاد شدن لیست برنامه کرش میکرد

پاسخ به سوال 
مجتبی یگانه  12 سال پیش
+1 0

خداروشکر:)

من با لیست ویو و گرید ویو خیلی مشکل داشتم و دارم و باید بگم خیلی تمرین میخواد تا خوب بتونی ازش استفاده کنی

Notify یعنی مطلع کردن ، وقتی شما آرایه ای که متصل به لیست هست رو تغییر میدی ، باید Adapter لیست را NotifyDataSetChanged بکنی ، تا تغییرات روی لیست اعمال بشه

Handler : وقتی از Thread استفاده بشه ، کارها به یک فرزند سپرده میشه (یعنی یه کارگر جدید) ، حالا این کارگر ها یک سری محدودیت ها دارند ، مثلا اعمال کردن تغییرات در UI مثل تغییر متن تکست ویو ، نمیتونه از طریق یک Thread کارگر انجام بشه ، حتما باید از طریق Thread اصلی برنامه انجام باشه ، اینجاست که ما به کارگر میگیم ، هر وقت کاری داشته ، صدا بزن من بیام !

استاد کامل تر توضیح دادند ، قبلا پرسیده شده ، و یادم میاد SileceWolf پاسخ  کامل تری داده بودند :)

0 0
می شه لطف کنید بگید thread و handler در کدوم قسمت آموزش داده شدن؟ (12 سال پیش)
0 0
بخش نهم (12 سال پیش)
0 0
ممنون از توضیحاتت کموبیش متوجه شدم ،باید بیشتر با لیست ویو ها کار کنم (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .