نمایش نتایج 1 تا 4 از 4

نام تاپیک: رابطه کلاس View با اینترفیس OnClickListener

  1. #1

    رابطه کلاس View با اینترفیس OnClickListener

    سلام کد زیر رو در نظر بگیرید
    mFalseButton.setOnClickListener(new View.OnClickListener() {    @Override
    public void onClick(View v) {
    Toast.makeText(QuezActivity.this,R.string.incorrect_toast,Toast.LENGTH_SHORT).show();
    }
    });


    چرا ارجاع به اینترفیس OnClickListener اینطوری نوشته شده : View.OnClickListener ؟ اصلا OnClickListener چه رابطه ای با کلاس View داره که دستور ارجاع اینطوری نوشته شده؟


  2. #2
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: رابطه کلاس View با اینترفیس OnClickListener

    چرا ارجاع به اینترفیس OnClickListener اینطوری نوشته شده : View.OnClickListener ؟
    به این دلیل که اینترفیس OnClickListener در کلاس View تعریف شده و عملاً جزئی از این کلاس محسوب میشه.

    اصلا OnClickListener چه رابطه ای با کلاس View داره که دستور ارجاع اینطوری نوشته شده؟
    این اینترفیس به جهت نیازی که برای Widgetها وجود داشته نوشته شده، درواقع این اینترفیس و چند اینترفیس دیگه Callbackی هستند برای رویداد های مختلفی که این عناصر UI (که بهشون میگیم Widget) باید بهش واکنش نشون بدن. همونطور که می دونید همه ی Widget ها از کلاس View مشتق شدن و نتیجه این هستن که این رویداد ها برای همه ی Widget ها مشترک هست.

    تا اینجا مشخص هست که این اینترفیس مخصوص کلاس View و Subclassهای اون هست و حتی متد onClick این اینترفیس هم ورودی ای از جنس View میگیره، پس این یک اینترفیس کلی و همه منظوره نیست و کاربردش مختص همین کلاس هست، پس منطقی بنظر میرسه که جزئی از این کلاس باشه.

    اگر سوال این هست که: از بعد فنی آیا باید این اینترفیس در این کلاس تعریف بشه یا میتونه در پکیج دیگری و در فایلی مجزا باشه ؟ پاسخ این هست که خیر، الزامی وجود نداره و در هر دو صورت، نتیجه‌ی نهایی یکسان هست.
    من خودم در پروژه هام همهی اینترفیس ها رو در پکیجی با نام interfaces قرار میدم، اما وقتی قراره شما یک Framework و APIی برای اون طراحی کنید، باید این موضوع رو درنظر بگیرید که این پروژه میتونه خیلی بزرگ بشه پس باید نظم و منطقی در ساختار درونی اون حاکم باشه تا علاوه بر اینکه یک پیوستگی کلی در کل پروژه حاکم باشه، هم تیمی ها هم بتون خیلی راحت تر در روند توسعه کمک کنن (بخصوص پروژه های اوپن سورس)

    علاوه بر این چون دیگران قراره به واسطه ی API از فریم وورک شما استفاده کنن، پس باید همین پیوستگی و نظم و منطق رو API حاکم کنید تا توسعه دهنده خیلی راحت تر بتونن با فریم وورک ارتباط برقرار کنن.

  3. #3

    نقل قول: رابطه کلاس View با اینترفیس OnClickListener

    نقل قول نوشته شده توسط Nevercom مشاهده تاپیک
    به این دلیل که اینترفیس OnClickListener در کلاس View تعریف شده و عملاً جزئی از این کلاس محسوب میشه.



    این اینترفیس به جهت نیازی که برای Widgetها وجود داشته نوشته شده، درواقع این اینترفیس و چند اینترفیس دیگه Callbackی هستند برای رویداد های مختلفی که این عناصر UI (که بهشون میگیم Widget) باید بهش واکنش نشون بدن. همونطور که می دونید همه ی Widget ها از کلاس View مشتق شدن و نتیجه این هستن که این رویداد ها برای همه ی Widget ها مشترک هست.

    تا اینجا مشخص هست که این اینترفیس مخصوص کلاس View و Subclassهای اون هست و حتی متد onClick این اینترفیس هم ورودی ای از جنس View میگیره، پس این یک اینترفیس کلی و همه منظوره نیست و کاربردش مختص همین کلاس هست، پس منطقی بنظر میرسه که جزئی از این کلاس باشه.

    اگر سوال این هست که: از بعد فنی آیا باید این اینترفیس در این کلاس تعریف بشه یا میتونه در پکیج دیگری و در فایلی مجزا باشه ؟ پاسخ این هست که خیر، الزامی وجود نداره و در هر دو صورت، نتیجه‌ی نهایی یکسان هست.
    من خودم در پروژه هام همهی اینترفیس ها رو در پکیجی با نام interfaces قرار میدم، اما وقتی قراره شما یک Framework و APIی برای اون طراحی کنید، باید این موضوع رو درنظر بگیرید که این پروژه میتونه خیلی بزرگ بشه پس باید نظم و منطقی در ساختار درونی اون حاکم باشه تا علاوه بر اینکه یک پیوستگی کلی در کل پروژه حاکم باشه، هم تیمی ها هم بتون خیلی راحت تر در روند توسعه کمک کنن (بخصوص پروژه های اوپن سورس)

    علاوه بر این چون دیگران قراره به واسطه ی API از فریم وورک شما استفاده کنن، پس باید همین پیوستگی و نظم و منطق رو API حاکم کنید تا توسعه دهنده خیلی راحت تر بتونن با فریم وورک ارتباط برقرار کنن.
    ممنون واقعا جواب سوالم رو گرفتم.
    پس میشه گفت همون طور که inner class داریم inner interface هم داریم؟ اینترفیس رو جدا از کلاس هم میشه نوشت؟

  4. #4
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: رابطه کلاس View با اینترفیس OnClickListener

    اینترفیس رو جدا از کلاس هم میشه نوشت؟
    آره، File > New > Java Class رو انتخاب کن، تو دایالوگ باز شده، Kind رو Interface انتخاب کن.

تاپیک های مشابه

  1. سوال در رابطه با اینترفیس
    نوشته شده توسط Xcalivorse در بخش C#‎‎
    پاسخ: 7
    آخرین پست: پنج شنبه 03 مرداد 1387, 21:34 عصر
  2. ارتباط tree View با بانک اطلاعاتی
    نوشته شده توسط vb341 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: شنبه 06 آبان 1385, 14:09 عصر
  3. مشکل Tree View با عکس
    نوشته شده توسط Milad Mohseny در بخش C#‎‎
    پاسخ: 4
    آخرین پست: دوشنبه 15 خرداد 1385, 23:29 عصر
  4. Drop کردن View با اسم فارسی
    نوشته شده توسط M.GhanaatPisheh در بخش SQL Server
    پاسخ: 5
    آخرین پست: یک شنبه 15 آبان 1384, 11:50 صبح
  5. چگونه از یک کلاس که با vb است در #c
    نوشته شده توسط zarzary در بخش C#‎‎
    پاسخ: 3
    آخرین پست: پنج شنبه 23 مهر 1383, 10:08 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •