过滤列表视图项目
Filter listview items
我正在尝试通过 get_tema 方法 = something 来过滤我的列表视图项目。
问题是我无法让它工作,如果我喜欢 if (poiAtual.getTema().equals("EXAMPLETEMA"))
填充 holder.nome 等等,它不会做我想做的,因为它无论如何都会在列表视图上放置一个空白项目。
下面是我的适配器!
谁能给个建议?
谢谢
private class POIListAdapter extends ArrayAdapter<POI> {
public POIListAdapter() {
super (Lista.this, R.layout.item_listview, POIs);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder;
if (view == null) {
view = getLayoutInflater().inflate(R.layout.item_listview, parent, false);
holder = new ViewHolder();
holder.id= (TextView) view.findViewById(R.id.txtID);
holder.nome = (TextView) view.findViewById(R.id.txtNomePOI);
holder.descricao = (TextView) view.findViewById(R.id.txtDescricao);
holder.foto = (ImageView) view.findViewById(R.id.ivFoto);
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();
}
POI poiAtual = POIs.get(position);
//TextView id=(TextView)view.findViewById(R.id.txtID);
holder.id.setText(Integer.toString(poiAtual.get_id()));
//TextView name = (TextView) view.findViewById(R.id.txtNomePOI);
holder.nome.setText(poiAtual.get_nomePOI());
//TextView phone = (TextView) view.findViewById(R.id.txtTema);
// phone.setText(poiAtual.get_tema());
//TextView descricao = (TextView) view.findViewById(R.id.txtDescricao);
holder.descricao.setText(poiAtual.get_descricao());
// ImageView ivFoto = (ImageView) view.findViewById(R.id.ivFoto);
//ivContactImage.setImageURI(poiAtual.get_imagemURI());
int resId = getResources().getIdentifier("lista_"+poiAtual.get_imagemURI(),"drawable",getPackageName());
holder.foto.setImageResource(resId);
//holder.foto.setImageResource(R.drawable.ic_launcher);
return view;
}
}
调用 getView 后为时已晚。
您应该过滤数组,然后调用适配器传递过滤后的数据,
否则你会得到空行,因为为每个数组元素调用了 getView。
您可以考虑使用可过滤界面和自定义过滤器来过滤列表视图。
我正在尝试通过 get_tema 方法 = something 来过滤我的列表视图项目。
问题是我无法让它工作,如果我喜欢 if (poiAtual.getTema().equals("EXAMPLETEMA"))
填充 holder.nome 等等,它不会做我想做的,因为它无论如何都会在列表视图上放置一个空白项目。
下面是我的适配器!
谁能给个建议? 谢谢
private class POIListAdapter extends ArrayAdapter<POI> {
public POIListAdapter() {
super (Lista.this, R.layout.item_listview, POIs);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder;
if (view == null) {
view = getLayoutInflater().inflate(R.layout.item_listview, parent, false);
holder = new ViewHolder();
holder.id= (TextView) view.findViewById(R.id.txtID);
holder.nome = (TextView) view.findViewById(R.id.txtNomePOI);
holder.descricao = (TextView) view.findViewById(R.id.txtDescricao);
holder.foto = (ImageView) view.findViewById(R.id.ivFoto);
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();
}
POI poiAtual = POIs.get(position);
//TextView id=(TextView)view.findViewById(R.id.txtID);
holder.id.setText(Integer.toString(poiAtual.get_id()));
//TextView name = (TextView) view.findViewById(R.id.txtNomePOI);
holder.nome.setText(poiAtual.get_nomePOI());
//TextView phone = (TextView) view.findViewById(R.id.txtTema);
// phone.setText(poiAtual.get_tema());
//TextView descricao = (TextView) view.findViewById(R.id.txtDescricao);
holder.descricao.setText(poiAtual.get_descricao());
// ImageView ivFoto = (ImageView) view.findViewById(R.id.ivFoto);
//ivContactImage.setImageURI(poiAtual.get_imagemURI());
int resId = getResources().getIdentifier("lista_"+poiAtual.get_imagemURI(),"drawable",getPackageName());
holder.foto.setImageResource(resId);
//holder.foto.setImageResource(R.drawable.ic_launcher);
return view;
}
}
调用 getView 后为时已晚。 您应该过滤数组,然后调用适配器传递过滤后的数据, 否则你会得到空行,因为为每个数组元素调用了 getView。
您可以考虑使用可过滤界面和自定义过滤器来过滤列表视图。