如何解决如何调整ListView的搜索过滤器,其中的项目是每个对象包含2个字符串的对象? 不是每个项目1个字符串
我有一个用arrayList finalArray实现的ListView。 finalArray项是object,每个对象 由两个TwxtViews组成-瑞典语单词及其英语翻译 (全部取自2个arrayLists-swedishPractice和englishPractice)。
我已将EditText设置为Filter,以便通过ListView进行搜索, 但是当我在过滤器中键入任何东西时,所有项目将从 屏幕上没有任何内容(而必须保留匹配项)。
为什么如此以及如何进行比赛? (当我使用包含以下内容的对象制作ListView 只有1个TextView,一切正常。)
这就是创建Word对象的方式:
public class Word {
private String swedish;
private String english;
public Word(String swedish,String english) {
this.swedish = swedish;
this.english = english;
}
public String getSwedish() {
return swedish;
}
public void setSwedish(String swedish) {
this.swedish = swedish;
}
public String getEnglish() {
return english;
}
public void setEnglish(String english) {
this.english = english;
}
}
这就是我制作ListView的方式:
ListView mListView = (ListView) findViewById(R.id.switchList);
EditText theFilter = (EditText) findViewById(R.id.searchFilter);
Log.d(TAG,"onCreate: Started");
ArrayList<Word> finalArray = new ArrayList<Word>();
for (int i = 0; i < Practice.swedishPractice.size(); i++) {
finalArray.add(new Word(Practice.swedishPractice.get(i),Practice.englishPractice.get(i)));
}
adapter = new CheckListAdapter(this,R.layout.list_item_layout,finalArray,this);
mListView.setAdapter(adapter);
theFilter.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int start,int count,int after) {
}
@Override
public void onTextChanged(CharSequence s,int before,int count) {
(VisaEj.this).adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
这是它的适配器(以防万一,您需要查看它才能给出答案) (在单独的课程中制作):
public class CheckListAdapter extends ArrayAdapter<Word> {
private static final String TAG = "CheckListAdapter";
private Context mContext;
private int mResource;
private int lastPosition = -1;
/**
* Hold variables in a view
*/
static class ViewHolder {
TextView swedish;
TextView english;
}
/**
* Default constructor for the CheckListAdapter
* @param context
* @param resource
* @param objects
*/
public CheckListAdapter(@NonNull Context context,int resource,@NonNull ArrayList<Word> objects,Context mContext) {
super(context,resource,objects);
this.mContext = mContext;
mResource = resource;
}
@NonNull
@Override
public View getView(int position,@Nullable View convertView,@NonNull ViewGroup parent) {
//get the word two examples
String swedish = getItem(position).getSwedish();
String english = getItem(position).getEnglish();
//create the word object with two examples
Word word = new Word(swedish,english);
//create the view result for showing the animation
final View result;
//Viewholder object
ViewHolder holder;
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource,parent,false);
holder = new ViewHolder();
holder.swedish = (TextView) convertView.findViewById(R.id.textView1);
holder.english = (TextView) convertView.findViewById(R.id.textView2);
result = convertView;
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
result = convertView;
}
Animation animation = AnimationUtils.loadAnimation(mContext,(position > lastPosition) ? R.anim.loading_down_anim : R.anim.loading_up_anim);
result.startAnimation(animation);
lastPosition = position;
holder.swedish.setText(word.getSwedish());
holder.english.setText(word.getEnglish());
return convertView;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。