بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

notifysetchanged کردن یک کلاس ریسایکلر آداپتر از داخل کلاس اکتیویتی

مدیریت گفتگو
هادی بی غم 9 سال پیش
آخرین تغییر: 9 سال پیش

سلام 

یک ریسایکلر ویو دارم که در اکتیویتی اول هست با زدن روی هر آیتم وارد اکتیویتی دوم میشه و در اکتیویتی دوم میشه اون آیتم رو لایکش کرد در زمان زدن کلید Back برمیگرده به اکتیویتی اول ، حالا من میخوام  کاربر  ببینه که لایکی که زده روی آیتم ریسایکلر ویو  تاثیر گذاشته و لایک شده 

دوستان یعنی می خوام از داخل کلاس اکتیویتی اول در زمان Resume شدن متد  notifyItemChanged   رو فقط برای یک position در کلاس آداپتر صدا بزنم ،

لطفا منو راهنمایی کنید ، متشکرم 

 

نظرات

HaDiSs 9 سال پیش
vaghti barmigarde be activitye awal mage dobare safhe refresh nemishe o be DB query nemizane ?age tu activitye dovom bade like kardan databaset ro update koni vaghti barmigardi be activitye awal on item bayad like khorde bashe dg
wolfOfAppStreet 9 سال پیش
اگه دیتابیس آنلاینه که باید هر دفه که وارد یه آیتم میشی و دوباره خارج میشی دیتابیس ریلود بشه که اصلا کار خوبی نیست اگرم دیتابیس آفلاینه وقتی که برگردی به صفحه قبلیت دیتابیس از اول لود میشه و اون آیتمی که روش کلیک شده گم میشه بهترین کار اینه که آیدی اون آیتمی که روش کلیک میشه رو به اکتیویتی جدید بفرستی و همچنین موقعیت اسکرول اون آیتم رو ، که وقتی برگشتی و دیتابیس ریلود شد ، گم نشه
HaDiSs 9 سال پیش
khob vase inke gom nashe (offline DB) position ono befrestid be activite awal , va baraye recycler view "scroll to position(pos)" ro bezanid.injori ham load shode hast ,ham scroll shode be positione khas,va chon page reload shode dg be notify kardan niazi nist
هادی بی غم 9 سال پیش
دوستان اکتویتی دوم finnish میشه عمدا این کارو کردم که اکتیویتی اول دوباره رفرش نشه من می خوام بدونم چطور از داخل متد onResume که در اکتیویتی اول هست متد notifysetchanged-->position خاصی رو صدا بزنم
زمانی که داری به اکتیویتی دوم میری position رو براش ارسال کن و همچنین از startActivityForResult استفاده کن. موقع برگشت از طریق intent یه پیام به اکتیویتی اولت ارسال کن همراه با اون پوزیشن. یعنی باید بیای متد onBackPressed رو توی اکتیویتی دوم اورراید کنی و خودت دستی اکتیویتی رو finish کنی و مثلا اگر لایک کرده بود یا کلا تغییری داده بود که در اکتیویتی اول باید مشاهده بشه RESULT_OK رک به عنواننتیجش در نظر میگیری. از اون ور توی اکتیویتی اول باید متد onActivityResult رو اورراید کنی. کلا در موردش سرچ کن کدهاش هست حال ندارم خودم بگردم واست کد زیاد هست در مورد startActivityForResult سرچ کن
هادی بی غم 9 سال پیش
مسعود جان تا اینجاشو درست انجام داده بودم مشکل من صدا زدن notifysetchanged هست که داخل کلاس آداپتر میشه صداش زد اما داخل کلاس کلاس اکتیویتی نمیشه
هادی بی غم 9 سال پیش
به خاطر زیاد بودن داده های درون دیتابیس نمی خوام کل ریسایکلر دوباره رفرش بشه فقط می خوام یک position رفرش بشه که با notifyItemSetchanged باید تغییرش بدم اما نمی اونم توی متد onResume کلاس اکتیویتی صداش بزنم
HaDiSs 9 سال پیش
شما میتونی از متد notifyItemChanged(position) استفاده کنی .اینحوری فقط یک سطر از دیتابیست اپدیت میشه .
HaDiSs 9 سال پیش
شما میتونی از متد notifyItemChanged(position) استفاده کنی .اینحوری فقط یک سطر از دیتابیست اپدیت میشه . (position) adapter.notifyItemChanged
شما بالاخره adapter رو توی اکتیویتی باید تعریف کرده باشی دیگ. خب تابع notifyItemSetchanged رو روش اجرا کن. اینجوری adapter.notifyItemSetchanged
هادی بی غم 9 سال پیش
دوستان توجه نکردید من جوابو دیشب پایین گذاشتم خودم !!! بازم مرسی ازتون

پاسخ‌ها 1

مشاهده پاسخ صحیح
هادی بی غم 9 سال پیش

 پاسخ صحیح

دوستان به راحتی فقط با همین خط درست شد ;)

 adapter.notifyItemChanged(G.position,G.selected);

نظرات


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