رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تهیه برنامه دفتر تلفن کوچک با اندروید از پایه
#1
باسلام به همه دوستان
در اینجا میخوام یک برنامه دفتر تلفن کوچک شامل لیستی از نام وشماره با امکان تغییروحذف واضافه را به کمک وهمراهی دوستان پیاده سازی کنیم
در ابتدا لازمست محیط وابزار برای شروع برنامه نویسی اندروید آماده باشد
محیط ما اکلیپس است که میتوانید آن را که یک مجموعه فایل زیپ شده است بدون نیاز به نصب دانلود وآن زیپ کنید
سپس sdk ,ADT اندروید رادر اکلپس دانلود کنید
لبته نیاز به نصب جاوا jdk نیز دارید که پیشنهاد میکنم در صورتیکه در این قسمت مشکلی دارید فصل دوم آموزش آقای کمالان را ملاحظه فرمایید
http://www.kamalan.com/1389/10/%D8%B4%D8...%8C%D8%AF/

یک پیشنهاد دیگه هم دارم واون اینکه برای تست نهایی وارتقا برنامه های اندرویدی یک نسخه AIDE هم روی گوشیتون داشته باشید وتابرنامه هاتونو برای اینکه بخواهید تغییرات کوچک بدهید دم دست تر باشد چون کار با محیط اکلیپس وبالا آمدن امولاتوراون معمولا زمان براست ولی اگر در گوشی خود بتوانید تغییرات را هرلحظه که چیزی به ذهنتان میرسد داشته باشید خیلی مفید است
علاوه برآن سینتکس وسمپل دستورات وتوابع اندروید وجاوا رانیز همیشه در دسترس دارید

خوب حالا میرسیم به شروع برنامه در اکلیپس ابتدا یک برنامه جدید باز میکنیم
File->New->Android application project
وبا نام PhoneBook پروژه خودمونو ایجاد میکنیم

   
پاسخ
تشکر شده توسط: ADMIN
#2
به به چه عالی نصف راه رو خودش رفت شرایط را برای برنامه نویسی بهینه آماده کرد. چه طوری ؟ با تقسیم بندی وشاخه بندی کردن فایلها شرایط را برای رعایت مدل mvc فراهم کرده همینطور با جداکردن فایلهای جاوا  وxml   وvalue  ها وتصاویر وآیکونها و....راه رو هموار کرده تا بتونیم ابجکت اورینتد عمل کردن رو هم رعایت کنیم واصولی ومنظم پیش بریم واگر آشنایی با این مفاهیم نداریم دغدغه زیادی نداشته باشیم فقط کافیه به همین شیوه ادامه بدیم . حالا جلو تر که بریم منظورم را بهتر متوجه میشید
فایل اصلی  وشروع یک برنامه اندرویدی AndroidManifest.xml  است این فایل است که بقیه فایلها را صدا میزند .
خوب اول از همه اسم تیتر برنامه که دربالا گذاشته phoneBook را به دفتر تلفن تغییر نام میدیم به این صورت  که به فایل strings.xml  در مسیر  PhoneBookresvalues  میرویم  ومقدار PhoneBook  را برای app_name   میگذاریم
"دفتر تلفن " در همینجا خط hello_world  را هم پاک میکنیم خطوط زیررا اضافه میکنیم
<string name="field_name1"> نام</string>
<string name="field_name2"> شماره</string>
<string name="button1"> اضافه</string>
<string name="button2">  ویرایش</string>
<string name="button3"> حذف</string>
این کار برای اینست که ما بتوانیم هر وقت نیاز شد برنامه خود را به راحتی تغییر دهیم وخللی در بقیه برنامه وارد نشود بعنوان مثال اگر بخواهیم در برنامه به جای کلمه "نام " از کلمه "name" استفاده کنیم کافیست فقط اینجا را تغییر دهیم
روی فایل  activity_main.xml هم در مسیر PhoneBookreslayout میاییم textView  مربوط به hello_world    را پاک میکنیم (با استفاده از تب GraphicalLayout ) و به جای آن در تب GraphicalLayout در همین فایل از پنجره Palette  دوتا textView  دوتا editText میکشیم میاریم روی صفحه  بدین صورت که  textView  از قسمت FormWidgets  وeditText ها را هم از قسمت TextFields  به ترتیب اول abc برای نام وبعد 123 برای شماره تلفن وسه تا هم button  از قسمت FormWidgets   برای کلیدهای اضافه ویرایش وحذف
اگر دیدید کنار این ابجکتها علامت تعجب گذاشته نگران نشید کافیه text   آنها را انتخاب کنید از قسمت      Propertiesو وصل کنید به مقدارشان در فایل string  وهمچنین type یعنی نوع فیلدهای editText هارو هم به ترتیب text و number  انتخاب کنید
درآخر هم یک listVeiw  هم از  Composite برای نمایش لیست تلفنها اضافه میکنیم
برنامه را اجرا کنید
نسبتا زمان زیادی میبرد تا امولاتور را باز کند وبرنامه را اجرا کند میتونید ظاهر اولیه برنامه را ببینید
تا اینجا برنامه را آپلود میکنم میذارم اگر سوالی هست رفع کنیم
یک مشکلی که خودم دارم اینه که بعضی وقتها با وجود اینکه اروری برنامه نداره امولاتور باز نمیشه خیلی وقتها هم رفرش نمیشه
دیگه اینقدر کلنجار میرم مثلا خاموش روشنش میکنم یا برنامه رو آن اینستال میکنم تا بالاخره جواب بده از دوستان کسی میتونه راهنمایی کنه

   

در عکس فوق دقت کنید قسمتهای علامت گذاری شده به شرح زیر است
1- بااستفاده از این کلید شما میتوانید پروژه جدید خود را تعریف نمایید کافی است نام پروژه را انتخاب کنید وبقیه قسمتها را با پیش فرضی که دارد جلو بروید تا پروژه ایجاد شود
در سمت چپ تصویر پروژه ایجاد شده phoneBook را که تعریف کردیم میبینید تمام فایلها وشاخه های ایجاد شده قابل ملاحظه است در اینجا من فایلهایی را که به آنها در این پروژه نیاز داریم مشخص کردم ودر ادامه توضیحات مربوط به آن داده خواهد شد

2- در این قسمت شما میتوانید یک امولاتور تعریف کنید یعنی یک شبه گوشی اندرویدی برای شما میسازد ومیتوانید نتیجه برنامه خود را ببینید(این قسمت زمان بر است باید صبور باشید)
   

3- با انتخاب این آیکون برنامه انتخاب شده اجرا میشود (در محیط امولاتور انتخابی ) توجه داشته باشید در صورتی عمل میکند که روی یکی از فایلهای جاوا برنامه خود باشید

4- MainActivity.java فایل اصلی  هر برنامه یعنی اولین فایل جاوایی که اجرا میشود و در فایل AndroidManifest.xml (نقطه شروع اجرا) صدا زده میشود همین فایل  است که کلاس اکتیویتی برنامه را اجرا میکند

5- حالا فایل فوق است که شمای ظاهری برنامه را با اجرای یک فایل xml به نام activity_main.xml میسازد . به لطف اکلیپس یک محیط گرافیکی برای ساخت ویوی برنامه در اختیار قرار گرفته که هر ابجکتی را با هر خواصی میتوانیم با
درگ کردن آن وتنظیم در قسمت properties (آیتم 11 روی شکل)به شکل دلخواه خود در آوریم وبا تغییر وضعیت بین GraphicalLayut و activity_main.xml (آیتم 9و10 روی شکل) میتوان کد xml ویا شکل گرافیکی برنامه را ملاحظه نمود

6- در این بخش میتوانیم آبجکتهای مورد نیاز برنامه دفتر تلفن خود را (شامل نام وشماره وکلیدهای اضافه ویرایش وحذف)که TextView و Button  میباشد را بکشیم وبگذاریم در هرجایی از صفحه که تمایل داریم باشد

7-از این قسمت EditText های مورد نیاز یعنی جایی که کار بر باید نام وشماره را وارد کند انتخاب میکنیم

8- از این قسمت نیز ListView یعنی جایی که باید لیست افراد وتلفنشون نشان داده شود را میکشیم روی صفحه

9 و10 - در قسمت 5 توضیح داده شد

11- از قسمت properties  روی هر آبجکتی که باشیم میتوانیم مشخصات آن را به دلخواه تغییر دهیم بعنوان مثال روی textView1 میرویم ومیخواهیم مشخصه text آن را که همان نوشته ای است که روی صفحه نشان داده میشود را
که همان کلمه فارسی "نام" است را نشان دهد . میتوانیم مستقیما کلمه نام را بنویسیم ویا اینکه متغییر متناظرش در فایل strings.xml  را انتخاب کنیم (در کنار آن یک کلید ... وجود دارد که میتوانید متغیر متناظر را همینجا تعریف کنید)
   

دوستان هرکجا متوجه نشدید باذکر شماره آن بخش بفرمایید تا بیشتر توضیح بدم
پاسخ
تشکر شده توسط: php , ADMIN
#3
بهتره توی تنظیمات Emulator گزینه Snapshot رو انتخاب کنید (توی AVD Manager) تا هربار، از اول راه اندازی نشه. اینطوری وقتی میبندینش، انگار توی موبایلتون گوشی رو قفل کردین (نه خاموش). برنامه های نصب شده و حتی بازشده هم در همون وضعیت باقی میمونن.
پاسخ
تشکر شده توسط: shpegah
#4
این هم سورس تا اینجا مطلب

   

از اینجا به بعد باید بریم سراغ دیتابیس تا این ابجکتها رو وصل کنیم به دیتا در بانک


فایل‌های پیوست
.zip   PhoneBook.zip (اندازه 1.17 MB / تعداد دانلود: 0)
پاسخ
تشکر شده توسط: php , ADMIN
#5
برای دوستانی که با مباحث برنامه نویس کمتر آشنا هستند لازمه بگم که در هر زبانی و در بیشتر برنامه ها برای اینکه بتوانیم اطلاعات خود را ذخیره کنیم تا بعدا هم بتوانیم از این اطلاعات استفاده کنیم از دو روش استفاده میشود
1- آن اطلاعات را در یک فایل ذخیره میکنند 2- در بانک اطلاعاتی ذخیره میکنند
در صورتیکه اطلاعاتی که میخواهیم ذخیره کنیم دسته بندی شده ومشخص است از بانک اطلاعاتی یا همان دیتا بیس استفاده میشود
در اینجا نیز چون ما قصد داریم فقط نام وشماره تلفن ذخیره کنیم پس اطلاعاتمان دسته بندی شده است پس از بانک استفاده میکنیم
هرزبان پیشرفته ای یکسری امکانات برای برقراری ارتباط با دیتابیس در اختیار کاربران قرار میدهد وکافیست کاربر اطلاعات خودش را با اون امکانات تطبیق دهد یعنی بگوید دقیقا اطلاعاتش (یا همون فیلدهایش) چیست وهرکدام از چه نوعی هستند ودر نهایت قرار است چه عملیاتی روی آن اطلاعات اعمال شود که معمولا اضافه وویرایش وحذف ونمایش اطلاعات چهار عمل اصلی محسوب میشوند علاوه بر آن اول از همه باید یک ارتباط با بانک بزنیم بعد آن را باز کنیم
ودر انتها هم ببندیم که همه این کارها را معمولا بدلیل مشابه بودن در یک کلاس قرار میدهندودر مواقع لزوم استفاده میکنند واما در اینجا
ما برای دفتر تلفن دوفیلد نام وشماره لازم داریم که نام را رشته ای (string) و شماره را عددی (integer) در نظر گرفتیم البته معمول آن است که شماره را نیز رشته ای بگیرند وروی آن یک مسک میگذارند تا اپراتور حتما عدد وارد کند
وفقط فیلدی که نیاز به اعمال محاسبات دارد عددی میگیریم ولی چون از هدف تاپیک دور میشویم در اینجا صرف نظر کردیم

برای اینکه بتونیم فیلدها مونو وصل کنیم به دیتابیس یک آداپتور ویک رابط نیاز داریم که بتونه بین آیتم ما وفیلد متناظرش رابطه برقرار کنه علاوه بر این ارتباط یکسری عملیات مورد نظر ما در این دفتر تلفن که شامل اضافه حذف ویرایش ونمایش میباشد نیز برایمان انجام بده برای اینکار یک فایل ایجاد میکنیم واین ارتباط را با زبان جاوا برای اندروید تفهیم میکنیم
در مثال ما این فایل جاوا را dbAdapter.java در مسیری که فایل اصلی برنامه یعنی MainActivity.java قرار داره ایجاد میکنیم این فایلها در مثال دقیقا در مسیر
PhoneBooksrccom.example.book قرار داره
آنچه در فایل dbAdapter.java باید بنویسیم این است ابتدا از امکانات در اختیار قرار گرفته استفاده میکنیم یعنی چی ؟ یعنی فایلهای مورد نیاز موجود را بااستفاده از دستور import  به برنامه الحاق میکنیم سپس یک کلاس تشکیل میدهیم که با استفاده از اون بتونیم به دیتابیسمون وصل بشیم و اطلاعات مورد نظر را استخراج کنیم یا تغییراتی اعمال کنیم
دوستانی که بحث رو دنبال میکنند این فایل رو من ایجاد کرده و سایر توضیحات لازم را در قسمت کامنتهای کد ایجاد شده مینوسیم بهتره از اونجا مطالعه فرمایید سپس در پایین همین تاپیک میذارم اگر در توضیحات ابهامی هست بپرسید تا بیشتر توضیح بدم

این هم از فایل آداپتور دانلود
پاسخ
تشکر شده توسط:
#6
بنظر من پروژه دفتر تلفن با توجه به نیاز به مباحث مثل ListView و Adapter یکم برای شروع سنگینه.
پاسخ
تشکر شده توسط:
#7
پس به نظر شما ادامه ندم ؟ تصور من اینه که در بین دوستان کسانی باشند که بااین مباحث در زبانهای دیگه آشنایی داشته باشند وتمایل داشته باشند در این محیط نیز کاربردی یاد بگیرند
در هر صورت نظر , نظر شماست
پاسخ
تشکر شده توسط: php
#8
نه منظورم این نبود. تاپیک متعلق به خودتونه و قطعاً برای برخی از کاربران مفید خواهد بود ولی بنظرم بهتره یا بعنوان پروژه برای مبتدیان اعلام نشه و یا اینکه قبلش مفاهیمی مثل ساختار ListView و مفهوم Adapter رو توضیح بدیم تا تازه کارها دچار سردرگمی نشن. جاوا یک زبان کاملاً شئ گراست و درنتیجه درک ساختارش برای کسانی که به برنامه نویسی رویه گرا عادت کردن، یک مقدار مشکل خواهد بود.
پاسخ
تشکر شده توسط: shpegah
#9
خوب تا اینجا قسمت اصلی کار انجام شده یعنی تا الان یک ویو از رابط کار بری ویک کد جاوا برای ارتباط با دیتا بیس داریم حال کافیست بین این دو ارتباط برقرار کرده واز آنها در جای مناسب خودشان استفاده کنیم
برای برقراری این ارتباطها از ابزارهایی که در اختیار داریم واندروید در اختیارمان قرار داده استفاده میکنیم تا دچار سردر گمی وپیچیدگیهای طریقه برقراری این ارتباطها نشیم

برای اینکار در فایل MainActivity.java  در تابع  onCreate ابتدا باید کلید "اضافه" را که ایجاد کردیم فعال کنیم وکد مربوط به اضافه کردن به دیتابیس را آنجا صدا بزنیم تا چیزی برای نمایش داشته باشیم
علاوه بر آن برای صدا کردن تابع اضافه کردن دو فیلد نام وشماره تلفن را هم بعنوان پارامتر باید به تابع خود بدهیم به همین دلیل نیاز به برقراری اولین ارتباطها داریم یعنی ارتباط با EditText1 ,EditText2  ودر نهایت تعریف وفراخوانی رویداد کلید Button1  این ارتباط را بدین طریق برقرار میکنیم که خود محیط اکلیپس با استفاده از کلید کنترل واسپیس کمک زیادی به پیاده سازی آن میکند
بدین ترتیب
EditText et1=(EditText) findViewById(R.id.editText1);
EditText et2=(EditText) findViewById(R.id.editText2);
Button btn1=(Button) findViewById(R.id.button1);

البته اگر با خطا برخورد کردید نگران نباشید روی خطا کلیک کنید تا به شما پیشنهاد import کردن را بدهد وشما انتخاب کنید
این دستورات با استفاده از فایل Rave.java که اندروید مختص خود ایجاد کرده ارتباط را برقرار میسازد
وحال طرز تهیه رویداد کلیک روی کلید اضافه :
بااستفاده ازمتغییری که برای کلید تعریف کردیم وکمک خود ادیتور نحوه تعریف مشخص میشود یعنی btn1 را نوشته سپس
setOnClickListener را انتخاب میکنیم ودر آن new  را زده با کنترل اسپیس  OnClickListener را انتخاب میکنیم نحوه تعریف را برایمان نمایش میدهد اگر خطا داشت روی خطا رفته وimport را انتخاب میکنیم
حال شروع به نوشتن تابع خودمان میکنیم
   
پاسخ
تشکر شده توسط: masiha68 , ADMIN
#10
پیشنهاد میکنم برای اینکه مطلب شما کاربردی تر و قابل فهم تر بشه، اون رو در جاهایی که لازم میدونید، با عکس مصور کنید.
پاسخ
تشکر شده توسط: shpegah
#11
خیلی سنگین توضیح دادی
بهتر بود یه ذره هم وارد جزئیات میشد ::) ممنون بخاطر زحمتت
پاسخ
تشکر شده توسط:
#12
چیا جان شما که استادی چرا این حرف رو میزنی؟اگه شد پروژه کتاب هم در ادامه میتونه خوب باشه
پاسخ
تشکر شده توسط: masiha68
#13
با تشکر از شما، لطفاً عکسها رو در محیط «ویرایشگر کامل» به پست ضمیمه کنید و از قراردادن لینک سایتهای دیگه پرهیز کنید چون اکثراً بخاطر مباحثی مثل HotLink و... از نمایش عکسها در سایتهای دیگه جلوگیری کردن (دو پست قبلی رو من اصلاح کردم).
پاسخ
تشکر شده توسط: shpegah
#14
خوب تا اینجای بحث همچنان که در شکل آن دیدید کلید اضافه را فعال کردیم تکه کدی که در آن قرار دادیم این است
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    // اضافه کردن محتوای وارد شده توسط کاربر به بانک
    db.open();
    db.insertContact(et1.getText().toString(), et2.getText().toString());
    db.close();
    ShowText("اضافه شد" + et1.getText());
}

برای اینکه ورودی کار بر را در یافت کنیم از تابع getText استفاده شده است وبرای هم نوع کردن آن از toString که با نوع ورودی در تابع insertContact  که در فایل Adaptor تعریف کردیم یکسان باشد استفاده شده است
قبل از استفاده از اطلاعات با db.open آن را باز وپس از استفاده با db.close میبندیم
تابع ShowText هم تابعی هست که خودمان برای نمایش متن مورد نظر مان بعنوان پیغام روی صفحه  مینویسیم
این هم کدش
public void ShowText(String msg)
{
    Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}

در تمام این مراحل ادیتور اکلیپس بیشترین کمک را برای پیاده سازی به ما میکند از آن حتما بهره ببرید تا پیچیدگی جزئیات را سهل نماید
حالا میتونیم کد را امتحان کنیم . خوب پیغام میده اضافه شد ولی از کجا متوجه درست عمل کردن اون بشیم ؟ باید تابعی بنویسیم که لیست ورودیها را در لیست ما نمایش بده و اما تابع ما
پاسخ
تشکر شده توسط: ADMIN
#15
لطفاً از تگ BBCode زیر برای هایلایت بهتر کدهای Java بجای تگ code استفاده کنید:
کد:
[shcode=java][/shcode]
پاسخ
تشکر شده توسط: shpegah




کاربران در حال بازدید این موضوع: 3 مهمان