【发布时间】:2018-03-27 04:02:06
【问题描述】:
我有一个ListView,其中包含一个TextView 和CheckBox。我正在尝试过滤我的适配器。但无法在ListView 中获得更新的结果。 ListView 只是清除搜索文本条目。我在下面提供我的代码。感谢您花时间研究这个问题。
适配器代码
@Override
public View getView(final int position, View convertView, final ViewGroup
parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView =
inflater.inflate(R.layout.activity_doctor_specialties_row, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.lblSpeciality);
final CheckBox mcheckbox = (CheckBox)
rowView.findViewById(R.id.cbSpeciality);
textView.setText(values[position].getName());
// Change the icon for Windows and iPhone
String s = values[position].getName();
if(dh.getSpltiesNameSelected()==null){
String chkditems = dh.getSpltiesNameSelected().toString();
if (chkditems.contains(s)) {
mcheckbox.setChecked(true);
}
}
String selectedspecialty=dh.getSpltiesNameSelected().toString();
if(selectedspecialty.contains(s)){ //for checking the returned data for
checked status
mcheckbox.setChecked(true);
}
return rowView;
}
活动代码
final EditText inputSearch = (EditText) findViewById(R.id.txtsearch);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
adapter1.getFilter().filter(cs.toString().toLowerCase(Locale.US));
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
adapter1.getFilter().filter(arg0);
}
});
【问题讨论】:
-
首先你需要修改
getView()。使用ViewHolder模式。并且要执行过滤器,您需要提供Filterableimplementation Follow This discussion. -
getFilter()方法在哪里?
标签: android listview android-adapter