قرار دادن search برای ListView
ضمن عرض سلام به همه دوستان
یک listView دارم ، مثل listView هایی که استاد آموزش دادن ، میخوام یک EditTexi بالاش بزارم واسه Search ، دقیقا مثل دفتر تلفن گوشی ، مثلا اون بالا که اسم تایپ کنی ، لیست ویو ، محدود بشه به اسم هایی که تو Search تایپ کردید ؟
سلام
روش Criss بسیار عالیه ، فقط یه اصلاحیه قرار بدم :
اگه قرار باشه چیزی مثل دفترچه تلفن ایجاد بشه یه مشکلی داره ، اونم اینکه String.contains میاد در کل رشته ، رشته مورد جستجو رو سرچ میکنه ، که گاهی اوقات ممکنه نتیجه اشتباه بده . مثلا در لیست اسامی ، اسم های "Amir Mohammad" و "Mohammad amir" رو داریم ، حالا وقتی در کادر جستجو "am" تایپ میکنیم انتظار داریم تمام اسامی که با am شروع میشه نمایش داده بشه ( مثل Amir Mohammad ) ، اما با این روش Mohammad amir رو هم نمایش میده که اشتباهه . برای چنین مواقعی که میخوایم اطلاعاتی فیلتر بشن که با کادر جستجو شروع میشن ( نه اینکه صرفا شامل اون هستند ) بهتره که به این صورت عمل کنیم :
edtSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence searchText, int start, int before, int count) {
G.namesFilter.clear();
int searchSize = searchText.length();
for (int i = 0; i < G.names.size(); i++) {
String strToBeSearched = G.names.get(i).name;
if (searchText.length() <= strToBeSearched.length() && strToBeSearched.substring(0, searchSize).equalsIgnoreCase(searchText.toString())) {
StructName name = new StructName();
name.name = G.names.get(i).name;
name.family = G.names.get(i).family;
name.number = G.names.get(i).number;
G.namesFilter.add(name);
}
}
adapter = new AdapterName(G.namesFilter);
lstContent.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
من یه روش ساده از stack overflow پیدا کردم که جواب داد، اونم این بود که Adapter تون را باید به جای ArrayAdapter از BaseAdapter اکستندز کنید، لینکشو براتون میذارم مطالعه کنید بازم اگه سوالی داشتید در خدمتم :) link البته این نکته رم اضافه کنم این کار برای وقتیه که آیتم دلخواهتون رو میخواید تو لیست ویو نمایش بدید در غیر این صورت اصن نیازی به Custom Adapter نیست و کار بسیار راحت تره.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .