آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

mma-amini  11 سال پیش  11 سال پیش
0 0

سلام دوستان

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

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

 public class ActivityList extends ActivityEnhanced {

@Override
protected void onResume() {
super.onResume();
adapter.notifyDataSetChanged();
}

public ArrayAdapter adapter;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);

final ListView lstContent = (ListView) findViewById(R.id.lstContent);
EditText edtSearch = (EditText) findViewById(R.id.edtSearch);

adapter = new AdapterName(G.netTask);
lstContent.setAdapter(adapter);

Commands.getData();
adapter.notifyDataSetChanged();

edtSearch.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {

ActivityList.this.adapter.getFilter().filter(cs);
}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub

}
});
}

}

در ضمن با اضافه کردن

adapter.notifyDataSetChanged();

یا

 ActivityMain.this.adapter.notifyDataSetChanged();

بعد از کد

 ActivityMain.this.adapter.getFilter().filter(cs);

مشکل حل نشد. :)

0 0
notifyDataSetChange (11 سال پیش)
0 0
چرا ActivityMain.this ؟ اول this رو بردار و امتحان کن (11 سال پیش)
+1 0
this رو برداشتم. از من خواست که adapter رو استاتیک کنم و من هم اون رو استاتیک کردم. اجرا کردم و همچنان مشکل پا برجا بود. اصلا اگر بخوام یک جستجو در لیست ویو بزارم غیر از این روش چه روش دیگه‌ای رو پیشنهاد میکنید؟ (11 سال پیش)
0 0
یه حلقه for می ذاری و یه آرایه temp می آری و اون رو با مقادیری که می خواهی پر می کنی (11 سال پیش)
0 0
ممنون میشم بیشتر راهنمایی کنی. دقیق متوجه نشدم. یعنی با مقدار جدید بره تمام آرایه‌ها رو بگرده و مقادیر مشابه رو نشون بده؟ (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Hossein Kurd  11 سال پیش
0 0

روش دوم : {به علت سنگین بودن در اجرا روی برخی دیوایس ها و =استاندارد نبودن سلوشن توصیه نمی شه}

یک ArrayList از توع همون ArrayList بساز و هر بار توی addtextchange تعیین کن

 for(int i=0 ; i< myArray.size(); i++){
if(myArray.get(i).contains(cs)){
myTempArray.add(myArray.get(i));
}


}

و بعد myTempArray رو به adapter بده و setDataSetChanged کن

 

+1 0
در داخل شرط از عبارت contains ایراد میگیره و اصلا امکان انتخاب contains رو بهت نمیده. در نتیجه این روش هم کار نکرد. در آرایه‌های استاتیک کد اولیه من و کدی که شما فرمودید کار میکنه. ولی در آرایه‌های داینامیک هیچکدوم کار نمیکنه. (11 سال پیش)
0 0
آرایه از چه نوعیه ؟ contains روی استرینگ فعال می شه (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .