Android 筛选列表视图项

Android 筛选列表视图项,android,listview,android-listview,Android,Listview,Android Listview,我试图通过get_tema方法=something来过滤我的listview项。 问题是我无法让它工作,如果我喜欢if(poiAtual.getTema().equals(“EXAMPLETEMA”))fill The holder.nome等等,它不会做我想做的事情,因为它会在listview上放一个空白项 下面是我的适配器 有人能提出建议吗? 谢谢 私有类POIListAdapter扩展了ArrayAdapter{ 公共POIListAdapter(){ super(Lista.this,R

我试图通过get_tema方法=something来过滤我的listview项。 问题是我无法让它工作,如果我喜欢
if(poiAtual.getTema().equals(“EXAMPLETEMA”))
fill The holder.nome等等,它不会做我想做的事情,因为它会在listview上放一个空白项

下面是我的适配器

有人能提出建议吗? 谢谢

私有类POIListAdapter扩展了ArrayAdapter{
公共POIListAdapter(){
super(Lista.this,R.layout.item_listview,poi);
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
视窗座;
如果(视图==null){
视图=GetLayoutFlater()。充气(R.layout.item_listview,父项,false);
holder=新的ViewHolder();
holder.id=(TextView)view.findViewById(R.id.txtID);
holder.nome=(TextView)view.findViewById(R.id.txtNomePOI);
holder.descripcao=(TextView)view.findViewById(R.id.txtdescripcao);
holder.foto=(ImageView)view.findViewById(R.id.ivFoto);
视图.设置标签(支架);
}
否则{
holder=(ViewHolder)view.getTag();
}
POI poiAtual=POI.get(位置);
//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电话=(TextView)view.findViewById(R.id.txtTema);
//phone.setText(poiAtual.get_tema());
//TextView descripcao=(TextView)view.findViewById(R.id.txtDescriptcao);
holder.descripao.setText(poiAtual.get_descripao());
//ImageView ivFoto=(ImageView)view.findViewById(R.id.ivFoto);
//ivContactImage.setImageURI(poiAtual.get_imagemURI());
int resId=getResources().getIdentifier(“lista_”+poiAtual.get_imagemURI(),“drawable”,getPackageName());
持有者.foto.setImageResource(剩余);
//holder.foto.setImageResource(R.drawable.ic_启动器);
返回视图;
}
}

一旦调用getView,就太晚了。 您应该筛选数组,然后调用传递筛选数据的适配器, 否则,您将得到空行,因为每个数组元素都调用了getView


可以考虑使用可过滤接口和自定义筛选器过滤ListVIEW。

我认为这个答案帮助你意味着你只想显示包含特定字符串的数据?@ PyyUuGupTa就是这样!你能举个例子吗?谢谢您应该创建一个过滤器类来扩展过滤器并重写两个方法。更详细地说,performFiltering是应用过滤器的方法,您应该在那里实现过滤逻辑。适配器必须实现可过滤接口。如果你想知道更多,我有一篇关于它的帖子:
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;
    }
}