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 بشه ؟

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


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

سلام

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

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

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


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

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

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط مهندس
      سلام.
      من فایل های php ارتباط با سرورمو اپلود کردم در فایل public html و داخل برنامه هم ک url ست کردم برای ارتباط با سرور.
      الان یک مشکلی ک دارم بحث امنیته.
      مثلا ما تو وب سایت بحث کوکی ها و سشن ها رو داریم. 
      تو اندروید برای امنیت باید چیکار کنیم؟؟
      در ضمن مثلا فرض کنید url من https://www.android.com/app/register.php .
      حالا شما فرض کنید یه هکر براحتی میتونه ب این صفحه دسترسی پیدا کنه دیتا اینرزت کنه در دیتابیس.
      یا کلا در این ادرس https://www.android.com/app/ ب تمام فایل ها میتونه دسترسی پیدا کنه.

       
    • توسط niloobani
      دوستان به یک برنامه نویس و توسعه دهنده ios و اندروید در یک شرکت معتبر نیاز دارم. لطفا در صورت داشتن شرایط پیام بدید
      http://banijob.com/company/پیشگامان-هوا-و-انرژی/jobs/APP-Developer
    • توسط niloobani
      سلام .به یک توسعه دهنده اپلیکیشن مسلط به ساخت اپلیکیشن برای اندروید و ios در یک شرکت معتبر نیاز دارم . لطفا در صورت داشتن شرایط به من پیام بدید
    • توسط snowman
      سلام
      یه برنامه کتاب الکترونیکی نوشتم که همه چیش درست کار میکنه فقط تو قسمت جستجوش گیر کردم. تو برنامه از sqlite برای دیتابیس استفاده کردم که شامل یه table هست .برنامه 4 قسمت داره که واسه هر قسمت یه اکتیویتی ساختم که با استفاده از لیست ویو اطلاعاتو نشون میده . تو قسمت جستجو نمیتونم آیتم رو به اکتیویتی مورد نظر پاس بدم .نمیدونم اصلا امکانش هست یا نه راستش این اولین برنامم هستش ممنون میشم راهنماییم کنیید.
      import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.SimpleAdapter; import android.widget.Toast; import java.util.HashMap; import java.util.List; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; public class search extends AppCompatActivity { private DatabaseHandler db; private ListView resultListView; private List<HashMap<String , Object>> resultBooks; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); resultListView = (ListView) findViewById(R.id.resultListView); db = new DatabaseHandler( getBaseContext() ); db.open(); if( db.getScreenState() == 1 ) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } db.close(); } public void onBtnFindClick( View v ) { resultListView.setAdapter(null); RadioGroup rGroup = (RadioGroup) findViewById(R.id.rgItems); int selected_item_id = rGroup.getCheckedRadioButtonId(); RadioButton rbTitle = (RadioButton) findViewById(R.id.rbSearchByTitle); RadioButton rbContent = (RadioButton) findViewById(R.id.rbSearchByContent); String search_by = ""; if( selected_item_id == rbTitle.getId() ) { search_by = "title"; } else if( selected_item_id == rbContent.getId() ) { search_by = "content"; } EditText etSearchKey = (EditText) findViewById(R.id.txtSearchKey); if( etSearchKey.getText().length() < 1 ) { Toast.makeText( getBaseContext() , getString(R.string.search_error_enter_text) , Toast.LENGTH_SHORT ).show(); return; } String key = etSearchKey.getText().toString().trim(); String[] keys = key.split("\\s+"); String query = search_by + " LIKE '%" + keys[0] + "%'"; StringBuilder sb = new StringBuilder(); for( int i = 1; i < keys.length; i ++ ) { sb.append( " OR " + search_by + " LIKE '%" + keys[i] + "%'" ); } query = query + sb.toString(); /* title LIKE '%ali%' OR title LIKE '%reza%' OR ... */ showResultOfSearch(query); } public void showResultOfSearch(final String query ) { db.open(); resultBooks = db.getTableOfResultsOfSearch( query ); db.close(); if( resultBooks.size() < 1 ) { Toast.makeText( getBaseContext() , getString(R.string.search_error_not_found) , Toast.LENGTH_SHORT ).show(); return ; } String[] from = { "title" , "fav_flag" , "see_flag" }; int[] to = { R.id.txtTitle , R.id.setFav , R.id.setSee }; SimpleAdapter adb = new SimpleAdapter( getBaseContext() , resultBooks , R.layout.tbl_content_list_row , from , to ); resultListView.setAdapter(adb); resultListView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent i = new Intent(getBaseContext(), book_content4.class); String my_id = resultBooks.get(position).get("id").toString(); i.putExtra("id", my_id); startActivity(i); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); } } ); } protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } }  

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