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

همیار اندروید

مرجــع تخصـصــی توسـعــه انــدرویــد

منوی وبسایت
حساب کاربری

آموزش اضافه کردن Search View در list view در برنامه نویسی اندروید

آموزش اضافه کردن  Search View در list view در برنامه نویسی اندروید
نوع هزینه
شرکت کنندگان
دریافت دسترسی
مشخصات این آموزش
موضوعات مرتبط
زبان برنامه‌نویسی
Java   ,   XML
نوع قسمت‌ها
محتوای ارائه شده
متن   ,   تصویر
مهارت های مورد نیاز
وضعیت انتشار
سطح آموزش
آخرین آپدیت
یادگیری این آموزش

اکشن بار دارای Search View

در اندروید نسخه Android 3.0 ویوی جستجو یا SearchView به نوار ابزار اضافه اضافه شد

از این ویوی  جستجو می توان برای جستجوی مطالب درlist view استفاده کرد

 

در زیر مراحل اجرای ویوی جستجو در list view رو براتون نوشتم

اولین کار اضافه کردن search menu

یک فایل سورس منو را با آیتم از فهرست جستجو ایجاد می کنیم(می خواهیم هنگامی که روی منوی جستجو کلیک می کنیم، ویجت جستجو در نوار ابزارنمایان شود)

در زیر مثالی از منو که ایجاد کردم  رو می تونید ببینید

(res / menu / search_menu.xml)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/search"
        android:title="Search"
        android:icon="@drawable/search"
        android:showAsAction="collapseActionView|ifRoom"
        android:actionViewClass="android.widget.SearchView" />
</menu>

در مورد منوی بالا صفت collapseActionView  به SearchView این امکان رو میده که گسترش پیدا کنه

به طوری که همه ی  اکشن بار رو پوشش بده

 

در مرحله ما میاییم و پیکربندی جستجو را ایجاد می کنیم

پیکربندی قابل جستجو نحوه رفتار SearchView را تعریف می کند

در زیر مثالی از فایل پیکربندی قابل جستجو رو میتونید مشاهده کنید

res/xml/searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="Search friend">
</searchable>

سپس با استفاده از برچسب  <meta-data>  این ویژگی را به یک فعالیت مرتبط اضافه کنید

<activity
    android:name=".ui.FriendListActivity"
    android:screenOrientation="portrait"
    android:configChanges="orientation"
    android:theme="@style/Theme.Yello"
    android:windowSoftInputMode="stateHidden"
    android:launchMode="singleTask"
    android:parentActivityName=".ui.SensorDetailsActivity">
    <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable">
    </meta-data>
</activity>

من می خوام در برنامه خودم SearchView را به FriendListActivity اضافه کنم

menu و SearchableConfiguration  را به فعالیت اضافه می کنم

پیکربندی قابل جستجو یا searchable configuration را با کلاس SearchView در کلاس activity مرتبط می کنم

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.search_menu, menu);

    SearchManager searchManager = (SearchManager)
                            getSystemService(Context.SEARCH_SERVICE);
    searchMenuItem = menu.findItem(R.id.search);
    searchView = (SearchView) searchMenuItem.getActionView();

    searchView.setSearchableInfo(searchManager.
                            getSearchableInfo(getComponentName()));
    searchView.setSubmitButtonEnabled(true);
    searchView.setOnQueryTextListener(this);

    return true;
}

همان طوری که در بالا میبینید SearchView رو  به activity اضافه شده کردم

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

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

اجرای SearchView.OnQueryTextListener در فعالیت ، اکنون باید دو روش جدید را بکار بگیریم

public boolean onQueryTextSubmit(String query)
public boolean onQueryTextChange(String newText)

این رابط ها در SearchView به رویدادهای تغییر متن گوش می دهند

@Override
public boolean onQueryTextSubmit(String query) {
    return false;
}

@Override
public boolean onQueryTextChange(String newText) {
    friendListAdapter.getFilter().filter(newText);

    return true;
}

در اینجا تابع onQueryTextChange فیلتر را با آداپتور لیست انجام می دهد ، برای انجام فیلتر ، آداپتور نیاز به پیاده سازی رابط Filterable دارد

 

Filterable adapter

در پروژه اومدم و از BaseAdapter با اجرای رابط Filterable استفاده کردم

در اینجا من کلاس فیلتر سفارشی FriendFilter را برای انجام فیلتر تعریف کرده ام ،

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

من دو لیست آرایه را در اینجا تعریف کرده ام

یکی برای نمایش در List View  و دیگری برای فیلتر (original list)

private ArrayList<User> friendList;

private ArrayList<User> filteredList;

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

درتصویر زیر مثالی از لیست جستجو رو می تونید ببینید

 

 

HRoid.ir/t158
لینک کوتاه این آموزش برای انتشار در شبکه های اجتماعی
نظرات این آموزش
ابتدا باید وارد حساب کاربری خود شوید ، تا بتوانید برای این آموزش نظری ارسال کنید
هنوز نظری برای این آموزش ثبت نشده است
کپی برداری از محتوا و دیگر منابع اختصاصی به هر نحو غیر مجاز است. حتی با ذکر منبع. در صورت تخلف پیگرد قانونی به همراه خواهد داشت.
Copyright © 2020 , www.HamyarRoid.com , www.HamyarAndroid.com , Terms , Sitemap
خلـــق هـمیـار انـدرویــد با
logo-samandehi