【发布时间】:2014-01-16 14:12:10
【问题描述】:
前提:我是 Java 和 Android 的新手,为此我搜索了很多,但我不明白如何在我的代码中实现 getFilter。
这是 MainActivity(相关代码):
public void loadList() {
/* allProd and allSpec are ArrayList<String> */
String[] allProdString = allProd.toArray(new String[allProd.size()]);
String[] allSpecString = allSpec.toArray(new String[allSpec.size()]);
listViewAdapter = new ListViewAdapter(this, allProdString, allSpecString);
listView.setAdapter(listViewAdapter);
}
这是自定义适配器:
public class ListViewAdapter extends BaseAdapter {
Activity context;
String title[];
String description[];
public ListViewAdapter(Activity context, String[] title, String[] description) {
super();
this.context = context;
this.title = title;
this.description = description;
}
public int getCount() {
return title.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
private class ViewHolder {
TextView txtViewTitle;
TextView txtViewDescription;
}
public View getView(int position, View convertView, ViewGroup parent) {
Typeface typeface = Typeface.createFromAsset(context.getAssets(), "font/Simple_Print.ttf");
ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.tabella_prodotti, null);
holder = new ViewHolder();
holder.txtViewTitle = (TextView) convertView.findViewById(R.id.titoloProd);
holder.txtViewDescription = (TextView) convertView.findViewById(R.id.subtitoloProd);
holder.txtViewDescription.setTypeface(typeface);
holder.txtViewTitle.setTypeface(typeface);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtViewTitle.setText(title [position]);
holder.txtViewDescription.setText(description [position]);
return convertView;
}
}
我怎样才能实现这个函数,以便能够在数组中搜索,并在列表视图中显示过滤结果?
如果您需要任何其他信息,请询问!谢谢
【问题讨论】:
-
实现
Filterable接口。覆盖 getFilter 并过滤数据 -
@Raghunandan 好的.. 你能给我举个例子吗?
-
有两组数据在搜索时显示过滤后的数据,在没有搜索时显示原始数据。你可以参考这个stackoverflow.com/questions/13090046/…
-
@Raghunandan 所以我应该创建其他 ArrayList 并用过滤后的数据填充它。但是这个新的 ArrayList 我应该在哪里创建?在 MainActivity 中还是在 CustomAdapter 中?因为现在在 MainActivity 中用解析 xml 填充原始 ArrayList
-
这只是一个想法,您可以决定如何实现自定义过滤器
标签: java android adapter custom-adapter