رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام دوستان

امروز میخوام یکی از ساده ترین و کاربردی ترین کتابخانه هایی که برای اندروید نوشته شده رو بهتون معرفی کنم: ButterKnife

[align=right]همونطور که میدونید در هر برنامه اندرویدی شما برای اینکه بتونید به عناصر layout هاتون در کد جاوا دسترسی داشته باشید مجبورید تا از متد findViewById استفاده کنید که در این صورت اگر ویجت هاتون زیاد باشن اونوقت باید این متد رو دائما فراخوانی کنید. کاری که این کتابخونه میکنه اینه که شما رو از این کار بی نیاز میکنه! یعنی بهتر بگم: این کتابخونه ایه که شما باید در تمام پروژه هاتون ازش استفاده کنید![/align]

[align=right]ابتدا در فایل Build.Gradle خط زیر رو به قسمت dependencies اضافه کنید و Gradle رو sync کنید:[/align]

compile 'com.jakewharton:butterknife:7.0.1'

من در پروژم یک فایل layout دارم که درون این فایل فقط یک دکمه قرار داره id این دکمه btn هست:

    android:id="@+id/btn"
   android:text="GO!"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />

حالا وقتی میخوام در فایل اکتیویتی به این دکمه دسترسی داشته باشم و براش رویداد تعریف کنم به جای طی کردن روال عادی، به صورت زیر عمل می کنم:

public class MainActivity extends AppCompatActivity {
    @Bind(R.id.btn) Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ButterKnife.bind(this);
        
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Clicked!", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

به خط اول در کلاس MainActivity دقت کنید: ما با همین کار ساده در یک لحظه هم دکمه رو تعریف کردیم و هم کار findViewById رو انجام دادیم! فقط در یک خط! قدرت این کتابخونه در اینجا مشخص میشه. (Bind یک Annotation هست نه متد)

همچنین در متد onCreate بعد از setContentView باید خط زیر رو بنویسیم (در کد بالا هم میبینید):

ButterKnife.bind(this);

شاید با یک ویجت خیلی فایده این کتابخونه معلوم نشه اما همین کد رو فرض کنید وقتی که ۱۰ تا ویجت در layout مون داشته باشیم! میبینید که چقدر حجم کد کم میشه!

نکته: در این کتابخونه برای تعریف رویداد هم روشی وجود داره که به نظرم خیلی جالب نیست برای همین اینجا نیاوردم.

اطلاعات بیشتر: https://github.com/JakeWharton/butterknife

موفق باشید :heart:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام خوب بود .

اما فایند کردن هم یک خطه!!!! پس به نظرم لزومی نداره از این کتابخونه استفاده بشه .

درضمن استفاده از کتابخانه خودش حجم میگیره ! پس حجم برنامه نویسی هم کم نمیشه .

موفق باشید...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام خوب بود .

اما فایند کردن هم یک خطه!!!! پس به نظرم لزومی نداره از این کتابخونه استفاده بشه .

درضمن استفاده از کتابخانه خودش حجم میگیره ! پس حجم برنامه نویسی هم کم نمیشه .

موفق باشید...

سلام مرسی

فایند کردن یک خطه در صورتی که ویجت هاتون local variable تعریف شده باشند نه class field اما اگر ویجت هاتون رو فیلد تعریف کنید و بعد بخواید فایند کنید اونموقع دو خط میشه!!! مثل تعریف 10 فیلد از نوع Button و فایند کردن اونها در onCreate !!!

منظورم حجم کدنویسی بود!

حجم کتابخونه بسیار ناچیزه و در نهایت که خروجی بگیریم تاثیر بسیار کمی در حجم برنامه داره که به راحتی کدنویسی کاملا می ارزه!

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...