23 ارسال در این موضوع قرار دارد

در اندروید 4 روش برای ذخیره اطلاعات وجود دارد :

1- Shared preferences

2- Sqlite Databases

3- Content Provider

4- Files

که بیشتر بر روی Sqlite(http://www.sqlite.org) کار خواهیم کرد و بقیه را در آموزش های بعدی معرفی خواهم کرد،بحث دیتابیس بدلیل گستردگی، نمی توان در یک آموزش بیشتر مباحث را شرح داد پس مرحله به مرحله پیش می رویم و در مرحله اول با ساختار دیتابیس و پیشنیازهای اولیه کار خواهیم کرد.

دیتابیس Sqlite :

Sqlite یک موتور دیتابیسی کوچک ولی قوی بود که توسط دکتر ریچارد هیپ در سال 2000 میلادی ایجاد شد. Sqlite ابتدا توسط اپل برای iphone ، موبایل های Symbian ،موزیلا فایرفاکس ، Skype ، PHP ، Adobe Air ، Mac OS X ، Solaries و بیشتر محیط های برنامه نویسی دیگر نیز استفاده می شد.که در اندروید نیز از همین دیتابیس استفاده خواهد شد.

برای مدیریت دیتابیس sqlite باید از برنامه های زیر استفاده کنید :

1- SqliteAdmin

2- sqliteBrowser

3- یک ADD-ONS Mozilla به نام SQLite Manager

4- و . . .

[align=center]6838_sqlite.png

توانایی های Sqlite عبارتند از :

[/align][align=center]i5869_type.png[/align]

بیشتر این ایتم های بررسی خواهند شد و مثال های کاربردی نیز ارائه خواهد شد و برای شروع با متدها و کلاس های دیتابیس آشنا خواهیم شد.

- چگونه دیتابیس را باز کنیم

روش اول)

public staticSQLiteDatabase.openDatabase(                            
Stringpath, SQLiteDatabase.CursorFactoryfactory, intflags )
 

پارامتر ها :

Path : مسیر دیتابیس

Factory : یک متد اختیاری برای وقتی که Cursor یک شرط را فراخوانی می کند استفاده می شود( cursor بعدا بررسی خواهد شد)

Flags : برای کنترل کردن حالت دسترسی به دیتابیس

که سه حالت دارد :

OPEN_READWRITE-	OPEN_READONLY-	CREATE_IF_NECESSARY
 

مثال 1 ) ایجاد کردن دیتابیس Sqlite :

[/align][align=center]w1592_newdb.png

شرح کدها :

ابتدا باید یک متغیر از نوع SQLiteDatabase با اسم db بصورت عمومی اعلان کنیم، تا بتوانیم در قسمت های دیگر کلاس ازش استفاده کنیم.

سپس در متد OnCreate باید دیتابیس باز کنیم( دیتابیس که قبلا وجود دارد) اگر وجود نداشت آنرا ایجاد خواهد کرد.

ارگومان

"/data/data/cis493.sqldatabases/myfriendsDB"

مسیر دیتابیس را که با نام myfriendsDB ایجاد کرده ایم را باز می کند. و پوشه های data که آمده ، برای این است که در حین اجرای برنامه در آن مسیر قرار گرفته.برای دستیابی به این مسیر در ایکلیپس باید آیکن DDMS را که در بالای برنامه قرار دارد را انتخاب کرده ، سپس در کادر باز شده روی تب File Exploree رفته و می توانید مسیر را مانند نمونه بالا پیدا کنید که باید در مسیر data نام پروژه خود را انتخاب و سپس در پوشه database نام دیتابیس قرار داده شده را مشاهده کنید.

[/align][align=center]m8329_path.png

- متد db.close(); : بستن دیتابیس

روش دوم) روش دوم برای بازکردن/ ایجاد کردن دیتابیس در داخل برنامه بصورت زیر میباشد

[/align][align=center]v7357_open.png[/align]

- اجرای دستورات :

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

1- ایجاد جدول :

کلا برای کار با sqlite باید با زبان sql آشنایی کافی داشته باشید.برای ایجاد جدول مانند زیر از دستور :

create table tblAMIGO( recIDinteger PRIMARY KEY autoincrement, name text, phone text );
 

استفاده می کنیم.این دستور یک جدول با نام tblAMIGO را که دارای سه فیلد میباشد ایجاد می کند.

نوشتن دستور در برنامه نویسی :

db.execSQL("create    table    tblAMIGO("+ " recID     integer    PRIMARY KEY autoincrement, "+ " name   text, "+ " phone text );   "    );
 

شی db را قبلا ایجاد کرده ایم و توسط متد execSQL می توان دستورات sql را نوشت.از این متد برای اجرای دستور استفاده می شود.

2- افزودن اطلاعات : برای این کار دقیقا مانند مثال بالا عمل می کنید و دستور insert را اجرا می کنید :

db.execSQL( "insert into tblAMIGO(name, phone) values ('AAA', '555' );" );

این خط باعث افزودن یک رکورد اطلاعاتی به جدول مربوطه می شود. که فیلد اول بصورت یکتا میباشد ، فیلد دوم AAA و فیلد سوم 555 در آن قرار می گیرد.

مثال های زیر هم :

db.execSQL( "insert into tblAMIGO(name, phone) values ('BBB', '777' );" );

db.execSQL( "insert into tblAMIGO(name, phone) values ('CCC', '999' );" );

دو رکورد در آن قرار می دهند.

** برای افزودن اطلاعات به جدول مثلا یک اطلاعات خاصی که کابر وارد کند باید یک textview را تعریف کرد و در دستور

db.execSQL( "insert into tblAMIGO(name, phone) values (t1.getText(), '777' );" );

اصلاعات آن را در فیلد مربوطه قرار داد.

فیلدهای پشتیبان کننده Sqlite :

text,varchar, integer, float, numeric, date, time, timestamp, blob, boolean

که بیشترشون مشخص هستند و نیاز به توضیح خاصی در مورد کاربردشون نیست.

بهتره همیشه موقعی که دستورات نوشته بشه درون یک try /catch نوشته بشه و برنامه crash نکنه و بتونید برنامه را مدیریت کنید تا از بروز خطا و خروج از برنامه جلوگیری بشه.

مانند مثال زیر )

try{
//perform your database operations here ...}
catch(SQLiteException e){
//report problem
}finally{
db.endTransaction();
}
 
 

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


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

سلام این برنامه هایی که گفتی رو میشه برای دانلود بگذاری همین sqladmin و دو تای دیگه رو چون من رفتم تو سایتش هیچی نفهمیدم نمیدونم کدومو دانلود کنم 

مرسی

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


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

سلام ممنون از توضیحات خوبتون

میشه بگید اگر بخواهیم دیتیابیس رو از طریق sqllit  بسازیم باید کدوم لینک رو دانلود کنیم و اگر از طریق خود برنامه

مثل این کد این دیتابیس دقیقا کجا ساخته میشه و اگر بخواهیم بهش مسیر دلخواه بدیم چطوری هست؟

514x100http://www.uploadtak.com/images/v7357_open.png[/img]

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


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

سلام

من خواستم از دستور insert استفاده کنم بهم این خطا رو داد:

DBError.png

چیکارش باید بکنم؟

db.execSQL("insert into doctor( name,family,Specialties,Address, phone) values (txtName.getText(),txtFamily.getText(),txtSpecialize.getText(),txtAddress.getText(),txtPhone.getText() );");

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


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

این دستور اشتباه میباشد. برای افزودن به دیتابیس از آموزش دوم دیتابیس اندروید استفاده کنید.

 

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


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

آقای سرسیفی عزیز!

خواهشمندم عکس ها را دوباره آپلود کنید. 

ممنون

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


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

سلام

من تازه دارم اندرويد ياد ميگيرم ميخوام يه برنامه اندرويدي با کد نويسي بنويسم که جزوه درس انگليسمون است,مشکلي که دارم نميدونم چه جوري بايد متن اين جزورو وارد برنامه کنم لطفا کمک کنيد.

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


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

سلام

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

چند تا جدول داریم که هر کدوم از بچه ها وظیفه دارن جدول مربوط به خودشون رو پر کنند (اطلاعات فارسی)

بانکمون هم با sqlite درست کردیم

حالا سوال اینجاست :

با sqlitebrowser_200_b1_winر میشه جداول رو بین بانک انتقال داد

فقط یه مشکلی داره اونم اینه که وقتی جداول رو import می کنم تمام متن های فارسیم خراب میشه

پیشنهاد شما برای تقسیم کار و فارسی نوشتن چیه؟؟

شاد باشید.

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


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

سلام ...

دوستان تصاویر پست اول گویا از روی سرور حذف شدن ...

درصورت امکان لینک ها رو تصحیح کنید ...

باتشکـــــــر :rolleyes:

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


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

سلام

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

چند تا جدول داریم که هر کدوم از بچه ها وظیفه دارن جدول مربوط به خودشون رو پر کنند (اطلاعات فارسی)

بانکمون هم با sqlite درست کردیم

حالا سوال اینجاست :

با sqlitebrowser_200_b1_winر میشه جداول رو بین بانک انتقال داد

فقط یه مشکلی داره اونم اینه که وقتی جداول رو import می کنم تمام متن های فارسیم خراب میشه

پیشنهاد شما برای تقسیم کار و فارسی نوشتن چیه؟؟

شاد باشید.

توسط یکی از برنامه های مدیریت sqllite یک جدول ایجاد کن با ستون های مورد نظر و توی اون داده های فارسی وارد کن و بعدش از همون یک export بگیر با فرومت csv  یا xml یا text    و یا sql و بعد اون فایل رو باز کن و شبیه اون سطر ها بقیه داده هاتو وارد کن و بعد import! 

اول تست کن اگه اوکی بود به هر کدام  از بروبچ یک فایل بده توش داده ها رو وارد کنند! یا توی اکسل بنویسن و ازشون بگیر و تبدیل کن!


سلام

من تازه دارم اندرويد ياد ميگيرم ميخوام يه برنامه اندرويدي با کد نويسي بنويسم که جزوه درس انگليسمون است,مشکلي که دارم نميدونم چه جوري بايد متن اين جزورو وارد برنامه کنم لطفا کمک کنيد.

اخه مشکلت رو مطرح کن ببینیم چیه ؟ 

مشکل کار با sqllite ?  یا حجم زیاد جزوه ؟ یا تایپش ؟ یا چیز دیگه ؟

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


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

با سلام من با نرم افزار navicat for sqlite یه دیتابیس درست کردم

به اون یه سری فیلد اضافه کردم که شامل title , body هستش

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

قسمت تایتل خود جمله و قمست بادی معنیشه

.

.

.

حالا راهنمایی ای که من از شما میخوام اینه که چجوری میتونم برای برنامه خودم یه قسمت برای جستجو قرار بدم که بتونه داخل دیتابیس جستجو کنه و نتایج رو نشون بده

در ضمن کدهام رو به این صورت نوشتم ( من برنامه هام رو با Basic for android درست میکنم)

If File.Exists(File.DirInternal,"hekeyat.db")=False Then	File.Copy(File.DirAssets,"hekayat.db",File.DirInternal,"hekayat.db")End Ifsql1.Initialize(File.DirInternal,"hekayat.db",False)ListView1.TwoLinesLayout.ItemHeight=100dipListView1.TwoLinesLayout.SecondLabel.Height=100dip	Dim cur1 As CursorTry	cur1=sql1.ExecQuery("SELECT * FROM hekayat")	For j=0 To cur1.RowCount-1		cur1.Position=j		ListView1.AddTwoLines(cur1.GetString("sTitle"),cur1.GetString("sBody"))	NextCatchi=0End Try

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


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

سلام

من می خواهم یه نوع داده برای فایل در پایگاه داده تعریف کنم، باید چه نوع داده گذاشت؟ آیا نوع Blob??

در ضمن در کلاس شی گرا

[shcode=java]

public Blob getSaveSound(){

        return SaveSound;

    }

    public void setSaveSound(Blob savesound){

        this.SaveSound =  savesound;

    }

[/shcode]

آیا از نوع Blob درست است؟

[[shcode=java]

[align=left]public Ava (Parcel ino){

        id = ino.readInt();

        NameSound = ino.readString();

        URL = ino.readString();

        SaveSound = ino.readint();

        BookMark = ino.readInt();

       

    }

[/shcode]

  SaveSound = ino.readint(); آخرش readint خطا میاد؟ یاید چی نوعی قرار داد؟

با تشکر

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


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

بهتره خود عکس را در دیتابیس ذخیره کنید و نام تصاویر را ذخیره کنید،چون blob تصاویر بصورت باینری ذخیره میشوند و دوباره باید از باینری اطلاعات را بخوانید.

روش کارتون درست هستش و چون از Parcelable استفاده کرده اید میتوانید از  object هاتون رو استفاده کنید.

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


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

سلام

ممنون از توضیحاتون

نمی خواهم عکس استفاده کنم، بلکه می خواهم صوتی بزارم تا انو بخونه

یعنی اگر از object استفاده کنم غیر از عکس مثلا صوتی در پایگاه خوانده میشه؟ و بقیه مشکلی پیش نمیاد؟

ممنون

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


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

من برای کاراموزی دانشگاه دوره برنامه نویسی اندروید رو گذروندم و الان باید پروژه اش رو تا دهم شهریور تحویل بدم . پروژه ای که به من دادند برنامه تغذیه کودک هستش که بر اساس ماه به مادر گفته میشه چه غذایی باید به کودکش که بین 0-1 ساله است داده بشه .البته بخش های دیگری هم داره که فعلا مد نظر من نیست . استادمون گفتند حتما باید از sqlite studio  استفاده کنیم . من این نرم افزار رو دانلود و نصب کردم و توش پایگاه داده ام رو ساختم . یک جدول با نام تغذیه درست کردم که دو ستون داره یکی ایدی ماه هستش و دیگری متن تغذیه مناسب که برای هر ماه حداقل 10-15 خط هستش . مادر با ورود به برنامه فهرست ماهها رو جلوش میبینه و با کلیک بر روی هرکدوم از ماهها باید اطلاعات متن از دیتابیس خونده بشه و برای مادر نمایش داده بشه . من اصلا نمیدونم  چطور باید اینکارو انجام بدم دکمه های ماه رو در xml ساخته ام و قسمت on clickرو هم نوشتم اما نمیدونم چطور باید متن رو از دیتابیس بگیرم و نمایش بدم میشه خواهشا کمکم کنید ؟ در واقع من نمیدونم چه تابعی باید برای خوندن متن هام از دیتابیس و نمایشش در textview قرار گرفته در layout بنویسم ؟ ایا باید از cursor استفاده کنم ؟

تو این قسمت از برنامه من هیچ نوشتنی در دیتابیس ندارم و فقط باید بخونم در ضمن همونطور که استادمون گفته بودند من یک java class جدا برای نوشتن توابعم ساخته ام و در بقیه activity ها فقط این توابعو فراخوانی میکنم ......ممنون میشم از هرکسی که در حد توانش کمکم کنه huh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gif

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


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

دوست عزیز شما پست استفاده از دیتابیس خارجی رو تو سایت پیدا کنین احتمالا مشکلتون حل میشه

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


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

سلام یک سوال

من در پایگاه داده ها،  100 تا رکود دارم،

برنامه ی نوشته بشه که همه فیلد ها به طور همزمان آپدیت شه، مثلا در ستون اولی، همه سطر ها عدد یک است، وقتی دکمه زده شد، همه رو به عدد صفر آپدیت بشه

از چه روشی استفاده کنم؟

با تشکر

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


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

دوست عزیز شما میتونی از کد زیر استفاده کنی

update tbl set id=0 where id=1

اگه بخوای چندتا فیلد و همزمان مقدارشونو عوض کنی با کاما اونا رو از هم جدا کن

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


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

این کدی گفتی کد دستوری پایگاه داده است

منظورم این نیست که 100 تا رکورد جداگانه بنویسیم!؟؟؟!!!!

این کد زیر ببنید، فقط می تونه یک رکورد اپدیت کنه

[shcode=java]

       //---- update a contact

       public boolean updateContact(long rowld, String name)

       {

           ContentValues arg = new ContentValues();

           arg.put(KEY_NAME, name);

          //arg.put(KEY_EMAIL, email);

          return db.update(DATABASE_TABLE, arg, KEY_ROWID + "=" + rowld, null) > 0;

          

       }

[/shcode]

روش دیگه هم هست، اگر از روش شی گرا باشه

اینم فقط یک رکورد اپدیت می کنه

[shcode=java]

    // ---updates a contact---

    public boolean updateContact(AvaSh up_ava) {

        ContentValues argsa = new ContentValues();

 

            argsa.put(KEY_ID, up_ava.getId());

            argsa.put(KEY_NAME, up_ava.getName());

            argsa.put(KEY_Famil, up_ava.getfamil());

            argsa.put(KEY_Faal_boolean, up_ava.getfaal());

   

           

        return db.update(DATABASE_TABLE_ALL, argsa, KEY_ID + "=" + up_ava.getId(),

                null) > 0;

    }

[/shcode]

چی کدی باید  جایگزن کنیم، که همه رکود همزمان آپدیت شه؟

با تشکر

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


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

خب شما روشتون فرق میکنه توی کد اخری که گذاشتین ببینین گفتین

[shcode=java]KEY_ID + "=" + up_ava.getId(),[/shcode]

این فقط واسه ایدیه توی قسمت بالا رو نگاه کنین نوشتین

[shcode=java]argsa.put(KEY_ID, up_ava.getId());[/shcode]

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

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

http://androidituts.com/android-sqlite-database-insert-example/

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


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

سلام

فک کنم خوب میتوجه نشدی

منم گفتم دیگه که اون دو روش فقط یک فیلد آپدیت می کنه

حالا چی کار کنیم که همه فیلدها در ستون چهارمی (KEY_Faal_boolean) اپدیت بشه؟؟؟؟ از حلقه For که میشه استفاده کرد؟؟

 باتشکر

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


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

سلام

 آقا عکسای این آموزش لود نمیشه :-/:-/:-/:-/:-/:-/:-/:-/:-/:-/

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


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

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

http://tahlildadeh.com/CourseDetails/102/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%DB%8C%20%D8%B4%D8%A7%D8%B1%D9%BE.aspx

ثبت نام کردم 

امروز تازه این سایتو دیدم

می خوام بدونم خدایی اینجا میتونم اندروید رو یاد بگیرم؟؟

ممنون

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط Omid Zakeri
      این فریمورک مختص اندروید طراحی نشده ولی سبک بودن آن موجب شده‌است که بسیاری از برنامه نویسان از آن در برنامه‌های اندرویدی استفاده کنند. این فریم ورک جهت اتصالات JDBC وSpring و اندروید طراحی شده است.
       
       
      @DatabaseTable(tableName = "users") public class User { @DatabaseField(id = true) private String username; @DatabaseField private String password; public User() { // ORMLite needs a no-arg constructor } public User(String username, String password) { this.username = username; this.password = password; } // Implementing getter and setter methods public String getUserame() { return this.username; } public void setName(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
    • توسط Omid Zakeri
      با آمدن ORM‌ها به دنیای برنامه نویسی، کار برنامه نویسی نسبت به قبل ساده‌تر و راحت‌تر شد. عدم استفاده کوئری‌های دستی، پشتیبانی از چند دیتابیس و از همه مهمتر و اصلی‌ترین هدف این ابزار "تنها درگیری با اشیا و مدل شیء گرایی" کار را پیش از پیش آسان‌تر نمود.
      در این بین به راحتی می‌توان چندین نمونه از این ORM‌ها را  نام برد مثل IBatis , Hibernate ,Nhibernate و EF که از معروفترین آن‌ها هستند.
      من در حال حاضر قصد شروع یک پروژه اندرویدی را دارم و دوست دارم بجای استفاده‌ی از Sqlitehelper، از یک ORM مناسب بهره ببرم که چند سوال برای من پیش می‌آید. آیا ORM ای برای آن تهیه شده است؟ اگر آری چندتا و کدامیک از آن‌ها بهتر هستند؟ شاید در اولین مورد کتابخانه‌ی Hibernate جاوا را نام ببرید؛ ولی توجه به این نکته ضروری است که ما در مورد پلتفرم موبایل و محدودیت‌های آن صحبت می‌کنیم. یک کتابخانه همانند Hibernate مطمئنا برای یک برنامه اندروید چه از نظر حجم نهایی برنامه و چه از نظر حجم بزرگش در اجرا، مشکل زا خواهد بود و وجود وابستگی‌های متعدد و دارا بودن بسیاری از قابلیت‌هایی که اصلا در بانک‌های اطلاعاتی موبایل قابل اجرا نیست، باعث می‌شود این فریمورک انتخاب خوبی برای یک برنامه اندروید نباشد.

      معیارهای انتخاب یک فریم ورک مناسب برای موبایل: 
      سبک بودن: مهمترین مورد سبک بودن آن است؛ چه از لحاظ اجرای برنامه و چه از لحاظ حجم نهایی برنامه سریع بودن: مطمئنا ORM‌های طراحی شده‌ی موجود، از سرعت خیلی بدی برخوردار نخواهند بود؛ اگر سر زبان هم افتاده باشند. ولی باز هم انتخاب سریع بودن یک ORM، مورد علاقه‌ی بسیاری از  ماهاست. یادگیری آسان و کانفیگ راحت تر. greenDAO-master.zip
    • توسط Omid Zakeri
      تا به حال نرم افزار های زیادی از قبیل توییتر(twitter) , گوگل پلاس (+google) , جیمیل (gmail)  را در اندروید دیده‌ایم که باswipe/pull down ( کشیدن صفحه به سمت پایین) محتوای خود را بروز میکنند . زمانی که صفحه را از بالا به پایین میکشیم یک محتوای جدیدی به ما نشان داده می‌شود یا اینکه محتوای قبلی بروزرسانی خواهد شد.  در این آموزش میخواهیم کار با SwipeRefreshLayout را آموزش دهیم. این لایه به ما کمک می‌کند که طراحی اصولی (material designn) و کاربر پسندی را در برنامه های خود داشته باشیم.
       
      در یک آموزش مختصر با ما باشید تا به طور ساده با  نحوه کار SwipeRefreshLayout (کشیدن صفحه به سمت پایین) آشنا شویم.
      این مثال نحوه ی Refresh(تازه سازی) کردن صفحه با استفاده از SwipeRefreshLayout را به شما نشان  میدهد.مراحل را طبق زیر دنبال کنید.
      1-با استفاده ار اندروید استودیو یک پروژه ی جدید با نام Swipe تحت بسته ی com.example.Swipeایجاد کنید. نحوه ی ایجاد پروژه ی جدید در بخش آموزشی ساخت اولین پروژه در اندروید استودیو توضیح داده شده است.
      2-
      محتوای فایل res/layout/activity_main.xml را مانند آنچه در ادامه آمده است تغییر دهید. 3-محتوای فایل اکتیویتی اصلی java/com.example.sendemail/MainActivity.java را به منظور اجرای کدهای دلخواه پس از انجام عمل swipe/pull downn (کشیدن صفحه به سمت پایین)مانند آنچه در ادامه آمده است تغییر دهید.
      محتوای زیر مربوط به فایل res/layout/activity_main.xml می باشد.
      <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mySwipe" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- کد خود را اینجا وارد کنید--> </android.support.v4.widget.SwipeRefreshLayout>   این لایه(بالا) از کتابخانه‌ی زیر است.  
       
      android.support.v4.widget
      در کد بالا ما لایه‌ی SwipeRefreshLayout را به عنوان لایه‌ی والد یا ریشه استفاده کرده ایم و درون آن می‌توانیم لایه ها و عناصر دیگر را به کار ببریم.
      به عنوان مثال میتوان به صورت زیر نوشت. <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mySwipe" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="من یک متن هستم" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:gravity="center"/> </ScrollView> </android.support.v4.widget.SwipeRefreshLayout>  
      معمولا درون این لایه یک recyclerView  یا listView به کار می‌رود که در صورت تازه سازی (refresh) مقادیر آیتم ها دچار تغییر شوند(آیتم جدیدی  وارد لیست شده یا از آن حذف شود). همچنین این لایه می‌تواند به عنوان یک لایه ی فرزند ظاهر شود.
      حالا نوبت این است که در اکتیویتی (activity) خود این لایه را وصل کنیم و از آن استفاده کنیم.در زیر محتوای فایل java/com.example.location/MainActivity.java آورده شده است.
      package com.example.Swipe; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { SwipeRefreshLayout mySwipe; @Override protected void onCreate(Bundle savedInstanceState) { ;( super.onCreate(savedInstanceState ;( setContentView(R.layout.activity_main ;( mySwipe = (SwipeRefreshLayout) findViewById(R.id.mySwipe () mySwipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener { @Override () public void onRefresh{ //اعمالی را که میخواهیم هنگام تازه سازی انجام شود ;( mySwipe.setRefreshing(false } ;({ } }     داخل کد بالا ما با صدا زدن متد setOnRefreshListener با ورودی رابط (interface) OnRefreshListener می‌توان متد onRefresh را بازنویسی (override) کرده و داخل آن هر عملی که برای تازه سازی لازم است انجام داد. برای مثال زمانی که ما برنامه ای متصل به اینترنت داریم و میخواهیم با swipe کردن مقادیر را بروزرسانی کنیم در متد onRefresh میتوانیم وضعیت اتصال به اینترنت را چک کنیم و اگر متصل بود دیتا را از اینترنت دریافت کرده و مقادیر محتوای صفحه را بروزرسانی کنیم. در اخر کد با نوشتن mySwipe.setRefreshing(false) انیمیشن ایجاد شده را متوقف میکنیم.
      اگر در جایی از برنامه بخواهیم خاصیت swipe pull down و انیمیشن را غیر فعال کنیم میتوانیم از دستور setEnabled(false) استفاده کنیم.
    • توسط Omid Zakeri
      ویجت یک برنامه ی کوچک و یا یک کنترل از برنامه ی اندروید شما می باشد که در صفحه ی home  قرار گرفته است.  ویجت ها می توانند به راحتی در دسترس باشند، چرا که به شما اجازه می دهند تا برنامه های مورد علاقه ی خود را روی صفحه home قرار دهید تا به سرعت به آنها دسترسی داشته باشید. احتمالا چند ویجت متداول از جمله ویجت موسیقی، آب و هوا و ساعت، را دیده اید.
      ویجت ها می توانند انواع مختلفی داشته باشند از قبیل ویجت اطلاعات، ویجت های مجموعه، ویجت های کنترل و ویجت های چندگانه. اندروید یک چارچوب کامل به ما ارائه می دهد تا ویجت های خود را گسترش دهیم.
       
      Widget - XML file
      برای ایجاد یک ویجت کاربردی، ابتدا چیزی که نیاز دارید، شی Object AppWidgetProviderInfo است که شما در یک فایل XML ویجت جداگانه تعریف می کنید. برای انجام این کار، بر روی پروژه خود راست کلیک کرده و یک پوشه جدید به نام xml ایجاد کنید. حالا روی پوشه تازه ایجاد شده راست کلیک کرده و یک فایل XML جدید ایجاد کنید. نوع منبع فایل XML باید به AppWidgetProvider تنظیم شود. در فایل xml برخی از خواص را به صورت زیر تعریف می کنید:
      <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="146dp" android:updatePeriodMillis="0" android:minHeight="146dp" android:initialLayout="@layout/activity_main"> </appwidget-provider> Widget - Layout file
      حالا شما باید طرح ویجت خود را در فایل پیش فرض XML خود تعریف کنید. شما می توانید قطعات را برای تولید xml خودکار بکشید.
      Widget - Java file
      پس از تعریف طرح، در حال حاضر یک فایل JAVA جدید ایجاد کنید یا از موجود استفاده کنید و آن را با کلاس AppWidgetProvider گسترش دهید و روش بهروزرسانی آن را به صورت زیر تعریف کنید.
      در روش به روز رسانی، شما باید شیء دو کلاس را که PendingIntent و RemoteViews هستند تعریف کنید. نحو آن :
      PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_main);  
      Widget - Manifest file
      شما همچنین باید AppWidgetProvider را در فایل manifest خود به شرح زیر اعلام کنید:
      <receiver android:name="ExampleAppWidgetProvider" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info" /> </receiver>  
      MainActivity.java
      package com.example.omidza.myapplication; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.widget.RemoteViews; import android.widget.Toast; public class MainActivity extends AppWidgetProvider{ public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) { for(int i=0; i<appWidgetIds.length; i++){ int currentWidgetId = appWidgetIds[i]; String url = "http://www.tutorialspoint.com"; Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setData(Uri.parse(url)); PendingIntent pending = PendingIntent.getActivity(context, 0,intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.activity_main); views.setOnClickPendingIntent(R.id.button, pending); appWidgetManager.updateAppWidget(currentWidgetId,views); Toast.makeText(context, "widget added", Toast.LENGTH_SHORT).show(); } } } res/layout/activity_main.xml
      <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:transitionGroup="true"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point" android:id="@+id/textView" android:layout_centerHorizontal="true" android:textColor="#ff3412ff" android:textSize="35dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Widget" android:id="@+id/button" android:layout_centerHorizontal="true" android:layout_marginTop="61dp" android:layout_below="@+id/textView" /> </RelativeLayout> res/xml/mywidget.xml.
      <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="146dp" android:updatePeriodMillis="0" android:minHeight="146dp" android:initialLayout="@layout/activity_main"> </appwidget-provider> AndroidManifest.xml
      <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.omidza.myapplication" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name=".MainActivity"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/mywidget"></meta-data> </receiver> </application> </manifest>  
    • توسط Farzad Sarseifi
      دوازدهمین دوره آموزشی برنامه نویسی اندروید(پیشرفته)
      دوره برنامه نویسی اندروید یکی از جذاب ترین دوره های آموزشی میباشد که مخاطبان دوره میتوانند در این دوره اصول طراحی اپلیکیشن های تحت اندروید را طراحی و پیاده سازی نموده و شروع به کسب درآمد در حوزه اپلیکیشن های موبایل نمایند.کاربران این دوره میتوانند با کسب مهارت های مطرح شده در سرفصلهای دوره گام بزرگ و سریعی جهت ورود به بازار اپلیکیشن های اندرویدی برداشته و با انتشار برنامه های طراحی شده خود در فضای مجاری کسب درآمد کنند.هم اینک ده ها هزار نرم افزار تحت موبایل در فضای اینترنتی منتشر شده که تعداد بی شماری از این نرم افزارها با دانلود های حیرت آور منبع درآمدهای چندین میلیونی برای طراح خود بوده اند.اگر قصد ورود به بازار نرم افزارهای موبایل دارید هم اینک در دروه آموزشی برنامه نویسی اندروید شرکت کنید.
      اهداف کلی این دوره:
        پیاده سازی ORM دیتابیس سرویس های  Background در اندروید آشنایی با کتابخانه های مفید و پرکاربرد اندروید آشنایی با Fragment پیاده سازی وب سرویس پیاده سازی Api های گوگل پیاده سازی FireBase در اندروید پیاده سازی Push Notification در اندروید تست اپلیکیشن Junit و Espresso مهندسی معکول و خروجی نهایی اپلیکیشن ثبت نام دوره اندروید
       
      مشخصات دوره :
      مدرس (مدرسان) : فرزاد سرسیفی
      پیشنیاز: آشنایی با مفاهیم برنامه نویسی - آشنایی با زبان جاوا
      مدت زمان دوره:  10 جلسه  ( کارگاه کاملا عملی تحت پروژه)  به صورت کارگاهی (در مجموع 40 ساعت)(10 نفر)
      تاریخ برگزاری:
      (دوره از  12 آبان ماه 1396 به مدت 10 جلسه  - روزهای  جمعه 14 الی 18)
      مدرک: در پایان دوره مدرک پایان دوره از طرف انستیتو آموزشگاه اندروید ایران ارائه میگردد.
      سه دانشجو نمونه اول به شرکت های معروف ایرانی جهت همکاری معرفی می گردند.
      به دانشجویانی که در دوره های قبلی آموزشگاه اندروید ایران حضور داشتند 20 درصد تخفیف داده خواهد شد
      به شرکت کنندگان در دوره کد ویژه خرید محصولات شاپ دروید داده می شود و می توانند برای همیشه محصولات این فروشگاه را با تخفیف 50 درصدی تهیه کنند.
      ویژگی : آموزش در لابراتوار مجهز به سیستم های روز به صورت شبکه تحت NetSupport و متصل به اینترنت و کاملا اینتراکتیو تحت پروژه عملی انجام خواهد گرفت.
      مکان برگزاری : این دوره آموزشی با همکاری آموزشگاه ویستا برگزار خواهد شد
       
      راهنمای ثبت نام:
      جهت کسب هر نوع اطلاعاتی در خصوص دوره میتوانید با ایمیل info@android-learn.ir وشماره های تماس ۸۸۵۰۸۰۸۰ -۸۸۵۵۴۲۱۷ -۸۸۵۵۴۲۱۳ تلگرام همراه 09100046764 تماس حاصل نمایید.
      ثبت نام دوره اندروید
       
      سرفصلهای دوره آموزشی برنامه نویسی اندروید پیشرفته  به صورت کاملا عملی:   پردازش های پس زمینه ای
      سرویس های پس زمینه Service BroadCastReciver AlramManager  

      ذخیره سازی اطلاعات با دیتابیس SQLite ORM و realm
      آشنایی با ORM های استفاده از Sugar ORM آموزش و پیاده سازی دیتابیس Realm در اندروید  


      Notification در اندروید
      پیاده سازی Notification در اندروید Notification های سفارشی طراحی واسط کاربری برای Notification آشنایی با Pending Intent پیاده سازی Push Notification  با استفاد از OneSignal  
       
      Firebase
      Firebase امکانات Firebase در اندروید پیاده سازی Register و Login در Firebase پیاده سازی Push Notification Crash Reporting  
       
      وب سرویس ها در اندروید
      آشنایی با وب سرویس JSON آشنایی با JSON Array آشنایی با JSON Object آشنایی با Retrofit دریافت اطلاعات وب سرویس Retrofit ارسال اطلاعات به سرور Retrofit Image Loader Gson,Jackson json parsing  
       
      پیاده سازی MVP Pattern در اندروید
      مفهوم Pattern در برنامه نویسی انواع Pattern های رایج در برنامه نویسی اندروید آشنایی با MVP Pattern در اندروید پیاده سازی MVP در اندروید  
       
      پیاده سازی Dependency Injection در اندروید
      مفهوم Dependency Injection در برنامه نویسی انواع کتابخانه های رایج  در DI برنامه نویسی اندروید آشنایی با کتابخانه Dagger 2  
       
       
      آشنایی با تغییرات اندرویدM و N
      Shade Animation CordinatorLayout Permission in Android 6  
       
      آشنایی با Kotlin
      معرفی kotlin پیاده سازی kotlin در اندروید استودیو  
       
      ایجاد App Widgets برای اپلیکیشن
      معرفی widget در اندروید هدف از پیاده سازی App widgets در اندروید ارتباط بین App Widgets و اپلیکیشن پیاده سازی App Widgets در اپلیکیشن  
       
      ایجاد کتابخانه در اندروید
      معرفی مفهوم کتابخانه در اندروید انواع کتابخانه های قابل پشتیبانی در اندروید ایجاد کتابخانه در اندروید Import کردن کتابخانه به پروژه و استفاده از آن  
      Flavor در اندروید استودیو
      آشنایی با flavor در اندروید استودیو ایجاد چند خروجی از اپلکیشن ایجاد خروجی های free,purchase,paid برای اپلیکیشن  
      Testing اپلیکیشن
      آشنایی با مفهوم Test در مهندسی نرم افزار آشنایی با کتابخانه Junit آشنایی با کتابخانه Espresso در Test Driven Android اندروید  
      خروجی اندروید
      ایجاد کلید Sign در اندروید مهندسی معکوس اپلیکیشن های اندروید آشنایی با Proguard در اندروید انتشار اپلیکیشن در گوگل پلی  
       
       
       این دوره توصیه میشود به :
      اشخاصی كه علاقه مند به آشنایی و كار حرفه ای با اندروید هستند. اشخاصی كه قصد فراگیری كامل طراحی اپلیکیشن های موبایل از ابتدا توسط اندروید دارند. اشخاصی كه قصد راه اندازی اپلیکیشن موبایل شخصی خود توسط اندروید دارند. اشخاصی كه میخواهند با فراگیری حرفه ای شروع به كسب درآمد نموده و به عنوان توسعه دهنده اندروید فعالیت كنند. شركتها و سازمانهایی كه قصد راه اندازی اپلیکیشن موبایل اندروید اختصاصی خود را دارند. دانشجویان رشته های كامپیوتر كه قصد فراگیری كامل توسعه اپلیکیشن های اندروید دارند. اشخاصی كه قصد پیاده سازی ایده های اپلیکیشن های موبایل را در قالب اندروید دارند. اشخاصی كه قصد دارند وب سایت خود را به اپلیکیشن های موبایل اندروید تبدیل كنند. و...  
       
      ثبت نام دوره اندروید

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios
  • فایل