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

ساخت لیست سفارشی در اندروید

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

211x351http://p30droid.com/Uploader/do.php?img=30[/img]

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

عنوان پروژه: 

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

1-ابتدا یک کلاس برای تعریف دیتایس و ایجاد جدول مربوطه با سه فیلد را ایجاد میکنیم.اگر به مبحث دیتابیس در اندروید آشنایی ندارید لطفا مقاله اول و دوم در رابطه با دیتابیس در اندروید را مطالعه نمایید.

[shcode=java]

import java.util.ArrayList;

import java.util.List;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE = "DATABASE_listview.db";

    public static final String tbl_data = "tbl_data";

    public static String id = "ID";

    public static String name = "name";

    public static String family = "family";

    // method to create or connect to a database

    public DatabaseHelper(Context context) {

        super(context, DATABASE, null, 1);

    }

    @Override

    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE " + tbl_data + " (" + id + " TEXT ," + name

                + " TEXT," + family + " TEXT);");

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("DROP TABLE IF EXISTS  " + tbl_data);

        onCreate(db);

    }

    public void AddRowtable(String id, String name, String family) {

        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues data = new ContentValues();

        data.put("ID", id);

        data.put("name", name);

        data.put("family", family);

        db.insert(tbl_data, null, data);

    }

}

[/shcode]

در این کلاس که کدهای آن را مشاهده میکنید یک تابع نیز به نام AddRowtable وجود دارد که برای وارد کردن اطلاعات در دیتابیس مورد استفاده میشود.

2- سپس در اکتیویتی اصلی برنامه یک لیست ویو قرار گرفته است برای نمایش اطلاعات موجود ، که از یک لیست سفارشی استفاده شده است.

فایل activity_main.xml که در مسیر res/layout میباشد را باز نمایید.

[shcode=xml]

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" >

   

        android:id="@+id/listView1"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_alignParentTop="true"

        android:layout_centerHorizontal="true" >

   

[/shcode]

3-اکتیویتی MainActivity را باز کنید:

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

do.php?img=31

شرح :

از خط 18 تا 21 ویجت ها و کلاس ها تعریف شده اند.

خط 26: لیست ویو تعریف  شده است.

خط 27 : یک شی جدید از کلاس دیتابیس با Context کلاس جاری را ایجاد کردیم.

خط 36 : FillData برای این در onResume فراخوانی شده است که چون قرار است به اکتیویتی افزودن برویم و بعد دوباره back میزنیم تا اطلاعات بروز رسانی شود.

do.php?img=34

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

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

خط 54 : cursor یک رکورد به جلو میرود: چون cursor از صفر شروع میشود برای اینکه برنامه اخطار ندهد یه خانه به جلو میرویم

خط 55 : یک Hashmap را تعریف میکنیم تا اطلاعات فیلدها را در آن بطور موقت ذخیره کنیم.

خطوط56  تا 58 : این خطوط اطلاعات پیدا شده از شرط که در cursor قرار دارند را ذخیره میکنند.

خطوط 60 تا 62 : این خطوط نیز اطلاعات موجود در متغیرهای بالا در خود ذخیره میکنند و هر فیلد دارای اسمی خاص میباشد.

خط 64: اطلاعات در شی Datalist ذخیره میشود.

خط 67 : اطلاعات پیدا شده و ست شده در Datalist را به کلاس listviewAdapter  میفرستد  تا بصورت لیست سفارشی نمایش داده شود.

68: سرانجام اطلاعات پیدا شده در لیست ویو نمایش داده میشود.

کلاس listviewAdapter  : این کلاس وظیفه نمایش اطلاعات را در قالب مشخص شده را داردو

do.php?img=37

خط : 56 : در این خط تعیین میکنیم که لیست ما از کدام layout باید برای نمایش استفاده کند.

در این کلاس آنچنان که ملاحضه میکنید در خطوط 60 تا 64 فیلدها فایل list-row که در مسیر res/layout میباشند را تعریف میکنیم.این لایوت همان لیستی میباشد که آن را طراحی کرده ایم تا لیست مورد نیاز ما را نمایش دهد.

do.php?img=38

[shcode=xml]<?xml version="1.0" encoding="utf-8"?>

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:background="@drawable/list_selector"

    android:orientation="horizontal"

    android:padding="5dip" >

   

        android:id="@+id/thumbnail"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_marginRight="5dip"

        android:background="@drawable/image_bg"

        android:padding="3dip" >

   

   

        android:id="@+id/title"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignTop="@+id/thumbnail"

        android:layout_toRightOf="@+id/thumbnail"

        android:text="title"

        android:textColor="#040404"

        android:textSize="20dip"

        android:textStyle="bold"

        android:typeface="sans" />

   

        android:id="@+id/date"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_below="@id/title"

        android:layout_marginTop="1dip"

        android:layout_toRightOf="@+id/thumbnail"

        android:gravity="left"

        android:text="family"

        android:textColor="#FFA500"

        android:textSize="14dip" />

   

        android:id="@+id/list_list"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentRight="true"

        android:layout_alignTop="@id/date"

        android:layout_marginRight="5dip"

        android:background="#E5E4E2"

        android:gravity="right"

        android:text="ID"

        android:textColor="#0000FF"

        android:textSize="12dip"

        android:textStyle="bold" />

[/shcode]

4-افزودن اطلاعات: برای افزودن اطلاعات ، روی دکمه منو کلیک کنید و گزینه add  را انتخاب کنید ، تا وارد اکتیوتی userActivity شوید :

do.php?img=39

افزودن اطلاعات :

do.php?img=35

خطوط 27 تا 32 : ویجت ها را تعریف میکنند.

خط 34 : وارد رویداد کلیک دکمه ثبت میشویم

خط 39 این دستور،تابع موجود در کلاس دیتابیس DatabaseHelper که به اسم dbh را میباشد اجرا میشود و اطلاعات در فیلدهای موجود ذخیره میشود.

دانلود مثال از آپلود سنتر انجمن پی سی دروید :

http://p30droid.com/Uploader/do.php?id=36

پسورد :

www.p30droid.com

دانلود نسخه PDF مطلب.

امیدوارم مفید واقع شود.

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


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

ممنون خیلی مفید بود

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


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

خیلی کد عالی هست . اما دوست عزیز اگر بخوام بین هر آیتیم در لیست ویو مثلا" 10 پیکسل فاصله بندازم دقیقا چکار باید کنم ؟

هرچی فاصله میدم اجزای داخل باکس فاصله میگیره !!!!

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


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

می توانید در listview کد زیر رو اضافه کنید :

    android:dividerHeight="5dp"

به صوت کلی میشه اینطور :

    android:id="@+id/list"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:dividerHeight="5dp"/>
1 کاربر پسند دیده است

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


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

می توانید در listview کد زیر رو اضافه کنید :

    android:dividerHeight="5dp"

به صوت کلی میشه اینطور :

    android:id="@+id/list"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:dividerHeight="5dp"/>

ممنون از پاسخ شما دوست عزیز . 

مشکل حل شد . حالا اگر بخوام از کناره ها ( از سمت راست و چپ ) صفحه هم فاصله داشته باشه باید چکار کنم ؟

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


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

میشه لطفا این کد رو طوری تغییر بدید که فقط یک ستون از ستون های جدول نمایش داده بشه؟

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

(پروژه دیکشنری، با دو ستون انگلیسی و فارسی و قابلیت سرچ در کلمات انگلیسی)

خیلی فوریه لطفا جواب بدید.

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


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

میشه لطفا این کد رو طوری تغییر بدید که فقط یک ستون از ستون های جدول نمایش داده بشه؟

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

(پروژه دیکشنری، با دو ستون انگلیسی و فارسی و قابلیت سرچ در کلمات انگلیسی)

خیلی فوریه لطفا جواب بدید.

برای مثال یک ستونی با قابلیت جستجو من اومدم مثال موجود در مقاله اول اقای مدیر رو تغییر دادم که قابلیت جستجو به اون اضافه کردم!

ListView.zip

ListView.zip

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


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

سلام

وقتی این سورس ایمپورت کردم، بدون اینکه کد تغییر بدم، thumbnail خطا میده

[shcode=xml] 

        android:id="@+id/thumbnail"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_marginRight="5dip"

        android:background="@drawable/image_bg"

        android:padding="3dip" >

   

[/shcode]

اشکال از کجاست؟

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


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

ببخشید

نحوه حذف کردن رکود از طریق لیست ویو آموزش ندادین؟ هر جا در پست انجمن می گردم، پیدا نمی کنم

خودمم درست کردم، ولی کار نمی کنه

تابع متد

[shcode=java]

protected void removeItemFromList(final int position) {

    // TODO Auto-generated method stub

       

    final DBbookmark dele = dBBookMark.get(position);

        // نمايش يک پنجره پيغام

        AlertDialog.Builder alert = new AlertDialog.Builder(BokMarkHOA.this);

        alert.setTitle("حذف");

        alert.setMessage("آيا ميخواهيد آيتم از ليست حذف شود؟");

        alert.setPositiveButton("بله", new OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

               

                db.open();

                db.deleteContact(position);

               

                db.close();

               

            }

        });

       

        alert.setNegativeButton("خير", new OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                // کارهايي که بعد از کليک برروي خير انجام ميگيره

                // حذف پيغام نمايش داده شده

                dialog.dismiss();

            }

        });

        alert.show();

        updataListView();

    }

[/shcode]

کلاس پایگاه داده DBbaseAdapter

[shcode=java]

    public boolean deleteContact( long rowld)

    {

        //String mail,String tabale,

    //    return db.delete(tabale, KEY_EMAIL + " LIKE '" + mail + "'", null) > 0;

        return db.delete(DATABASE_MAINTABLE, KEY_ROWID + "=" + rowld, null) > 0;

       

       

    }

[/shcode]

خواهش می کنم جواب بدین

ممنون

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


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

متن خطایی که از  thumbnail می گیره چیه ؟ 

position رکوردی که می خوای از لیست حذف کنی و ورودی متد removeItemFromList ، چطوری بدست اومده ؟ برای حذف در پایگاه داده بر طبق کد از طریق کلید اصلی (rowId)  اقدام شده ایا position مورد نظر همون rowId است؟

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


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

سلام لطفا لینک دانلود پروژه هم درست کنید

ممنون

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


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

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

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


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

سلام واقعا ممنون از اموزشتون

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

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


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

با سلام

میشه درباره hashmap بیشتر توضیح بدین که دقیقا جه کاری میکنه؟؟؟

مطالبتون عالی بود ممنون

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


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

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

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


سلام واقعا ممنون از اموزشتون

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

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

        listview1.setOnItemClickListener(new OnItemClickListener() {



            @Override

            public void onItemClick(AdapterView<?> arg0, View view, int position,

                    long arg3) {

                // TODO Auto-generated method stub

                switch (position) {

                case 0:

                    break;

                    

                case 1:

                    break;

                    

                    .

                    .

                    .



                    

                default:

                    break;

                }



            }

        });


با سلام

میشه درباره hashmap بیشتر توضیح بدین که دقیقا جه کاری میکنه؟؟؟

مطالبتون عالی بود ممنون

برای ذخیره دیتا استفاده میشه. به عنوان مثال وقتی اطلاعات از دیتابیس خونده میشه، تو hashmap ذخیره میشه و در نهایت از hashmap خونده میشه و تو xml ست میشه.

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


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

حالا اگه بخوایم یه عکس هم از db دریافت کنیم چطور؟

منظورم اینه که اول عکس رو _حالا چه به صورت دستی یا چه با استفاده از کد_ توی db قرار بدیم بعدش اونو توی listview نمایش بدیم.

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


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

سلام

یک ایمیج ویو میسازید داخل عناصر لیست ! بش میگید عکس رو بگیره

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


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

سلام

یک ایمیج ویو میسازید داخل عناصر لیست ! بش میگید عکس رو بگیره

نوع ذخیره سازی عکس توی db باید BLOB باشه؟

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


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

سلام میشه لطفا بگید اگر بخواهیم به لیست ویو فایل های mp3 اضافه کنیم مثل دیکشنری که وقتی روش کلیک می کنیم صدای مربوط به همون کلمه رو پخش کنه ؟

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


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

کلاس listviewadapter از کلاس های پیش فرض هست؟


لینک دانلود پروژه هم اصلاح باید بشه فکرکنم.

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


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

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

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


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

متوجه شدم چیکار باید انجام بده ولی متوجه نشدم کجا تعریفش کردید!!همون کلاسی میشه که توش getview تعریف میشه ؟!! از چیز خاصی نباید extends بشه ؟

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


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

سلام

یه پیشنهاد میکنم اول این پروژه رو کلان گام به گام برو جلو بعد روش تغییراتت رو روش اعمال کن فک کنم بهتر برای خودت چون بهتر چمو خمش دستت میاد

و بیشتر می تونی باهاش ارتباط برقرار کنی

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


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

سلام من می خوام با لیست ویو یک‌ کتاب بسازم که با کلیک روی هر آیتم یک داستان جدید باز شه مشکل آنجاست که می خوام کلا دوتا اگزمل داشته باشم یکی برای نمایش لیست موضوعات دومی برای نمایش متن داستانها .یعنی هر بار یک داستان جدید در اون فایل اگزمل باز شه ولی راهشو نمیتونم .اگه راهنمایی کنید که چطوری این کارو کنم ممنون میشم

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط djsaeedkhan
      سلام. وقت بخیر.
      من یه برنامه اندروید درست کردم و داخلش با alarm-manager قرار دادم که یه کاری هر مثلا1 ساعت یکبار انجام بشه. الان درست کار میکنه و حتی اگر موبایل روشن خاموش بشه بازم کار میکنه.
      ولی اگر کاربر برنامه هایی که حافظه رم رو پاک میکنن(برنامه های غیرضروری یا باز) مثلا (Clean Master- Space Cleaner & Antivirus) یا اگر از تنظیمات رم گزینه پاک کردن، اجرا کنه  alarm-manager دیگه کار نمیکنه و تا برنامه دوباره باز نشه شروع به کار نمیشه.
      راهی هست که بشه این مشکل رو حل کرد باسپاس
       
      Intent alarmIntent = new Intent(getActivity(), ReceiverUpdateData.class); AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), Integer.parseInt(newValue.toString())*60*1000, PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0));  
    • توسط SIMMORSAL
      سلام، این لینک آموزشه: https://github.com/SIMMORSAL/ViewDrag
       
      فقط این به انگلیسیه. کسی میتونه ترجمش کنه به فارسی که همه استفاده ببرن؟

    • توسط 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) استفاده کنیم.

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