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

مشکل سرچ در لیست ویو

amir.kenarang  9 سال پیش  9 سال پیش
0 0

سلام دوستان

من یک لیست ویو دارم و یک editText که میخام داخل این لیست جست و جو کنم.

با استفاده از کد addTextChangeListener یک فیلتر قرار دادم ولی هر وقت سرچ میکنم لیست خالی میشه و هیچ گزینه ای رو نشون نمیده.

 کدهای مربوط به این کلاس در زیر قرار دادم. لطفا راهنمایی کنید.

public class ActivityList extends AppCompatActivity{

//DataBase
private dbHandler handler;

//ListView
public ListView listView;

adapter listAdapter;

//make Array for ListView
List<StructMain> structList = new ArrayList<>();

//search
private EditText edtSearch;


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);

handler = new dbHandler(this);

listView = (ListView) findViewById(R.id.listView);


listAdapter = new adapter();

listView.setAdapter(listAdapter);

//search
edtSearch = (EditText) findViewById(R.id.edtSearch);

edtSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
listAdapter.getFilter().filter(charSequence.toString());
}

@Override
public void afterTextChanged(Editable editable) {

}
});
}


// adapter Class
class adapter extends ArrayAdapter<StructMain> {

public adapter() {
super(ActivityList.this, R.layout.adapter_list, structList);
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

final StructMain item = getItem(position);

G.inflater = getLayoutInflater();
View row = G.inflater.inflate(R.layout.adapter_list, parent, false);

TextView txtSavedName = (TextView) row.findViewById(R.id.txtSavedName);
LinearLayout layoutRoot = (LinearLayout) row.findViewById(R.id.layoutRoot);

layoutRoot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent2 = new Intent(G.currentActivity, ActivityUpdate.class);
intent2.putExtra("id", item.id);
finish();
G.currentActivity.startActivity(intent2);
}
});


txtSavedName.setText(item.name);

return (row);
}

}

public void refresh() {
handler.open();
int count = handler.count();
structList.clear();
if (count != 0) {
for (int i = 0; i < count; i++) {
StructMain row = new StructMain();

row.id = Integer.parseInt(handler.display(i, 0));
row.name = handler.display(i, 1);

structList.add(row);
}
}
handler.close();
listAdapter.notifyDataSetChanged();
}

@Override
protected void onResume() {
super.onResume();
G.currentActivity = this;
refresh();
}

}
+1 0
کار درستی نیست که به طور مستقیم داخل لیست ویو سرچ کنید. بهتره داخل همون منبعی که دارید ازش اطلاعات لیست ویو رو نمایش میدید، سرچ کنید و بعد از دریافت نتایج جدید لیست ویو رو به رو روز کنید. اینجوری هم وابسته به لیست ویو برای سرچ نیستید و مشکلتون رفع میشه. (9 سال پیش)
0 0
چطور باید این کار رو انجام بدم؟ (9 سال پیش)
0 0
اگر سرور ساید باشه که بهتره کد سرچ براش بنویسید. اگر SQLite که بازهم باید براش کوئری سرچ بنویسید. لیست ویو و RecyclerView برای سرچ کردن ساخته نشدن. برای نمایش لیست هستن. پس باید سرچتون رو قبل از نمایش اطلاعات انجام داده باشید. (9 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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