我试图限制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);
}
}
答案 0 :(得分:1)
只需使用最小maxcount
和项目数作为计数:
@Override
public int getCount(){
return Math.min(maxcount, super.getCount());
}