使用过滤器限制Android ArrayAdapter结果

时间:2014-06-20 16:07:12

标签: java android

我试图限制listview中返回的结果数量,它使用arrayadapter将字符串加载到其中。我知道我可以通过覆盖getCount()方法来做到这一点。下面的代码用于将结果限制为最多15,但是,当应用过滤器并且列表视图中显示的项目数小于我设置的限制时,应用程序会因索引超出范围异常而崩溃。我试过比较结果的大小没有运气。如何将arrayadapter / listview限制为最多15个结果,同时仍然显示小于过滤后的结果?

用于覆盖的自定义ArrayAdapter类

public class ListViewAdapter extends ArrayAdapter<String> {
  private int maxcount = 15;

  public ListViewAdapter(Context context, ArrayList<String> results) {      
      super(context, R.layout.list_item, R.id.result_name, results);
  }

  @Override
  public int getCount(){
      return maxcount;
  }

}

搜索活动类中的过滤器

adapter = new ListViewAdapter(this, resultsuggestions);

lv.setAdapter(adapter);       

inputSearch.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
      SearchActivity.this.adapter.getFilter().filter(cs);   
    }
}

1 个答案:

答案 0 :(得分:1)

只需使用最小maxcount和项目数作为计数:

@Override
public int getCount(){
    return Math.min(maxcount, super.getCount());
}