gpt4 book ai didi

java - 使用过滤器限制 Android ArrayAdapter 结果

转载 作者:行者123 更新时间:2023-12-01 12:49:39 26 4
gpt4 key购买 nike

我试图限制 ListView 中返回的结果数量,该 ListView 使用数组适配器将字符串加载到其中。我知道我可以通过重写 getCount() 方法来做到这一点。下面的代码将结果限制为最多 15 个,但是,当应用过滤器并且 ListView 中显示的项目数小于我设置的限制时,应用程序会因索引越界异常而崩溃。我尝试比较结果的大小,但没有成功。如何将 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;
}

}

搜索 Activity 类中的过滤器

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);
}
}

最佳答案

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

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

关于java - 使用过滤器限制 Android ArrayAdapter 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com