آکادمی آموزش آنلاین طوسی

نحوه به روز رسانی متن داخل یک TextView

اهداف آموزشی این درس:

1. نحوه به روز رسانی اطلاعات یک TextView در اندروید

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

همانطور که در آموزش هشتم توضیح داده شد اقدام به ساخت یک پروژه جدید اپلیکیشن اندرویدی در محیط اکلیپس می نماییم و نام آنرا Updating A View می گذاریم (لازم به ذکر است که در حین ساخت این پروژه برای Activity خود یا همان فایل جاوای اپلیکیشن هر نامی را می توانیم در نظر بگیریم اما نامی که در این آموزش در نظر خواهیم گرفت MainActivity خواهد بود. در واقع چنانچه تمایل دارید هم گام با این آموزش پیش روید پیشنهاد می شود نامی مشابه برای Activity اپلیکیشن خود در نظر بگیرید).

پس از ساخت پروژه و باز کردن فایل main.xml رابط گرافیک کاربر ما به شکل زیر خواهد بود:

همانطور که می بینیم یک TextView به صورت خودکار توسط اکلیپس ایجاد شده و حاوی عبارت Hello World, MainActivity می باشد. اولین کاری می بایست انجام دهیم این است که برای این TextView یک id در نظر بگیریم. برای این منظور سه راه کار وجود دارد که یکی از طریق کلیک روی Tab مربوط به main.xml و اختصاص id به صورت دستی است و دیگری از طریق پنجره Properties است به این صورت که اول روی این TextView کلیک کرده سپس به پنجره Properties رجوع می کنیم و Value مرتبط با Id را تغییر می دهیم و در نهایت با راست کلیک کردن روی این TextView انتخاب گزینه Edit ID می باشد (کلیه روش هایفوق در آموزش های پیشین به تفصیل مورد بررسی قرار گرفته اند. همچنین برای آشنایی با نحوه صحیح اختصاص id به آموزش های گذشته رجوع نمایید).

برای این TextView یک id تحت عنوان txt_TextOne در نظر می گیریم. حال قصد داریم تا سه دکمه تحت عناوین Nardebaan ، Narenji و Negahbaan روی UI قرار دهیم که کاربر با کلیک روی هر کدام از آنها بتواند آدرس وب سایت مرتبط را مشاهده نماید. اما پیش از این برای اینکه تمرینی از آموزش های گذشته داشته باشیم از یک سو و نیز اینکه رابط گرافیکی ما تا حدودی جذاب تر به نظر برسد از سوی دیگر قصد داریم تا رنگ Layout خود را به رنگی دلخواه تغییر داده و همچنین اندازه فونت و هم رنگ TextView خود را تغییر می دهیم تا بهتر روی رابط گرافیکی نمایان شود. پس از اجرای اپلیکیشن خود در این مرحله در Emulator با تصویر زیر مواجه خواهیم شد:

به طور خلاصه می توان گفت که برای تغییر رنگ UI می بایست یک بار روی خود UI کلیک کرده و در پنجره Properties اقدام به تغییر Value مرتبط با Background نماییم. رنگ در نظر گرفته شده در تصویر فوق ffde57# می باشد. به منظور تغییر مقادیر TextView هم به همین ترتیب اقدام خواهیم کرد به این صورت که پس از کلیک روی آن، Value های مرتبط با Text sizeو Text color را تغییر می دهیم. رنگ در نظر گرفته شده برای این متن مشکی بوده و اندازه آن 30dip است

حال می بایست سه دکمه روی رابط گرافیکی ایجاد کنیم تحت عناوین Nardebaan ، Narenji و Negahbaan و به منظور لینک دادن به آنها در Activity خود نیاز است برای هر کدام از آنها یک id نیز در نظر بگیریم. برای هر کدام از آنها به ترتیب btn_narenjiButton و btn_nardebaanButton و btn_negahbaanButton را در نظر می گیریم و در ضمن نام هر یک از دکمه ها را نیز نامی مرتبط با id آنها انتخاب می کنیم:

اگر به تصویر فوق خوب دقت کنیم می بینیم که متن داخل TextView ما به خط بعد انتقال داده شده است اما این در حالی است که پس از اجرای این اپلیکیشن در Emulator کل متن در یکخط نمایش داده می شود. در واقع علت این مسئله این است که همانطور که در تصویر فوق مشخص است نمایش UI این اپلیکیشن در محیط اکلیپس روی یک دستگاه 3.7 اینچی است اما این در حالی است که دستگاه مجازی که بنده ساخته ام یک تبلت است:

همانطور که در تصویر فوق مشخص است با انتخاب یک دستگاه بزرگ تر این مشکل داخل اکلیپس هم رفع خواهد شد (لازم به ذکر است که این تغییر نمایش رابط گرافیک کاربر در محیط اکلیپس هیچ گونه ارتباطی با ابعاد واقعی رابط گرافیکی اپلیکیشن نداشته و صرفاً جهت نمایش در محیط اکلیپس می باشد):

در این مرحله از آموزش کار ما در ارتباط به فایل main.xml به پایان رسیده وحال نوبت به برنامه نویسی در فایل MainActivity.java می رسد. برای این منظور این فایل را باز می کنیم.

 

 

 

 

 

 

همانطور که در آموزش اپلیکیشن ذکر شمار توضیح داده شد، نیاز است تا یک شیئ از روی کلاسTextView اندروید ساخته و آن را به تنها TextView موجود روی رابط گرافیکی لینک داده، سپس سه شیئ از روی کلاسButton اندروید ساخته و آنها را به سه دکمه موجود روی رابط گرافیک لینک دهیم (در واقع علت اینکه به جای گفتن کلاسTextView می گوییم کلاسTextView اندروید این است که این کلاسفقط در SDK اندروید است و در یک پروژه جاوا چنین کلاساصلا وجود خارجی نخواهد داشت. به عبارت دیگر درست است که از زبان جاوا برای توسعه اپلیکیشن خود استفاده می کنیم اما این در حالی است که برخی کلاسهای مورد استفاده فقط مخصوص اندروید بوده و به کلاسهای اختصاصی جاوا اضافه شده اند). اکنون طبق آموزش های گذشته این کلاسها را وارد Activity خود کرده و کد ما پس از تکمیل به صورت زیر خواهد بود:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

در کد فوق برای مشخص سازی بخش های مختلف از کامنت های فارسی استفاده شده است(به منظور استفاده از کامنت های فارسی فقط به خاطر داشته باشیم که پس از وارد کردن کامنت فارسیبه کد زمانیکه بخواهیم فایل خود را Save کنیم پنجره ای باز خواهد شد که در آن پنجره حتماً می بایست گزینه Save as UTF-8 را کلیک نماییم).همانطور که در کد فوق مشخص است ابتدا یک شیئ تحت عنوان tv از روی کلاسTextView اندروید ساخته ایم و آن را به متنی که روی رابط گرافیک قرار دارد لینک داده ایم. سپس دکمه ای تحت عنوان orangeButton به معنی "دکمه نارنجی" ساخته ایم و آن را به دکمه ای لینک داده ایم که عنوان آن Narenji است. دکمه دومی که ایجاد کرده ایم ladderButton به معنی "دکمه نردبان" است و آن را هم به دکمهای لینک داده ایم که عنوان آن Nardebaan است. در نهایت دکمه دیگری تحت عنوان guardButton به معنی "دکمه نگهبان" ساخته ایم که آنرا به دکمه Negahbaan ارتباط داده ایم.

اکنون تنها کاری که می بایست انجام دهیم این است که داخل متد onClick هر یک از دکمه ها آدرس وب سایت مرتبط را وارد کنیم تا به محض کلیک روی آن دکمه آدرس مرتبط به نمایش در آید. برای این منظور کد فوق را به شکل زیر تکمیل می کنیم:

همانطور که در تصویر فوق مشخص است ابتدا نام شیئی که از روی کلاسTextView اندروید را ساختیم نوشته سپس از متد setTextاستفاده کرده و هر آنچه که می خواهیم داخل این متد قرار دهیم را مابین دو گیومه می نویسیم و در نهایت یک علامت ; قرار می دهیم. همانطور که در تصویر فوق مشخص شده است دور نام tv که نام شیئی است که برای کلاسTextView در نظر گرفته ایم نقطه چین قرار گرفته است. حال اگر نشانگر موس خود را روی آن قرار دهیم باکسی زرد رنگ نمایان خواهد شد که حاکی از آن است که نمی توانیم به یک شیئ غیر final که داخل متد قرار گرفته است دسترسی داشته باشیم. برای رفع این مشکل اکلیپس به ما پیشنهاد می دهد که کلاسTextView خود را به final تبدیل کنیم. حال با رفع این مشکل می توانیم دو دکمه دیگر را نیزتکمیل کرده و کد نهایی ما به صورت زیر خواهد بود:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

همانطور که مشخص است کلید واژه final پیش از نام کلاسTextView اضافه شده و مابقی دکمه ها نیز تکمیل شده اند. حال برنامه خود را اجرا می کنیم:

می بینیم که با کلیک روی دکمه Nardebaan متن اولیه TextView به آدرس سایت نردبان آپدیت می شود.

 

پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:

1. آیا تغییر حالت نمایش رابط کاربر در محیط اکلیپس تغییری در رابط کاربر ایجاد می کند یا خیر؟

2. به چه شکل می توان دستگاه هایی با ابعداد مختلف را در خود محیط اکلیپس تست کرد؟

3. چرا می بایست کلاسTextView که در Activity اپلیکیشن یا همان فایل جاوا قرار دارد را final کرد؟

4. آیا اگر یک شیئ از روی کلاسButton اندروید بسازیم می توانیم از همان شیئ برای دکمه های مختلف استفاده کنیم یا خیر؟

برای مشاهده نظرات وارد سایت شوید یا ثبت‌نام کنید.

44th_Session,_Updating_A_View.pdf

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

سرفصل های آموزشی دوره رایگان برنامه نویسی اندروید Android

منبع این درس در سایت سکان (www.sokanacademy.com)