برای انتقال دیتاها از Adapter به Activity از interface استفاده کردیم
پوریا شفیعی۰۸ آبان ۱۳۹۹، ۱۷:۱۷
سلام و درود
یک مثال بزنم شما وقتی میخوای برای یک باتن onClickListener ست کنی در اصل داری یک اینترفیس ست میکنی ، اگه روش(onClickListener پارامتر ورودیش) کنترل کلیک کنی وارد کلاس ویو میشی و اینترفیسش میبینی که در توضیحاتش نوشته وقتی روی اون ویو که در مثال ما یک باتن است کلیک بشه این متد فراخوانی میشه ولی ما که نمیخواهیم در کلاس ویو عملیاتی که کلیک کردن روی اون باتن قرار انجام بشه را پیاده سازی کنیم(چون قراره نمونه ای از این کلاس تحت عنوان یک باتن در اکتیوتی ساخته بشه) ، میخواهیم داخل اون MainActivity که باتن را فایند کردیم عملیات کلیک را پیاده سازی کنیم واسه همین از اینترفیس استفاده میکنیم که میتونیم با استفاده از اینترفیس ، متدش در کلاس View فقط تعریف کنیم و پیاده سازیش(implement) جایی که میخواهیم ،انجام میدیم و به این صورته که در اصل باید کلاس MainActivty را روبروش بنویسیم implemen OnclickListener بعد زیرش قرمز میشه که میگه من متدی یا متدهایی دارم که باید پیاده سازی بشه ،پیاده سازی که انجام دادیم یک متد انتهای اکتیویتی پیاده سازی میشه که قراره عملیاتی که روی ویو مورد نظری که اون اینترفیس را روش ست میشه را اجرا کنه و بعد تنها کاری که میمونه انجام بدیم این است که بگیم این ویو چه ویویی است ، واسه همین روی باتن مورد نظر setOclick را مینویسیم بعد به عنوان پارامتر ورودی کلیک واژه this را میدیم که اشاره میکنه به خود اکتیوتی که این اینترفیس را پیاده سازی کرده ولی ما برای سادهتر شدن کار (که اون implement ننویسیم و ... )یک ایننر کلاس از ویو به عنوان پارامتر ورودی بهش میدیم که خودش متد را در انجا پیاده سازی میکنه
الان در اینجا در اداپتر هم به همین شکل است ما اینترفیس در اداپتر فقط متدش را تعریف میکنیم بعد روی ویویی که مد نظرمون است ست میکنیم ولی پیاده سازیش را میخواهیم داخل اکتیوتی انجام بدیم چون mainAcitivty که الان تصمیم گیرنده هست واسه همین اونجا پیاده سازیش میکنیم
خلاصش این که با این کار جایی که اینترفیس پیاده سازی شده ، گوش به زنگه تا وقتی روی اون ویو کلیک شد عملیات داخلش اجرا بشه
و این اینترفیس علاوه بر اینکه یک اطلاع دهنده به کلیک شدن روی اون ویو است میتونه اطلاعاتی هم تحت پارامترهای ورودیش به اکتیوتی منتقل کنه