有没有办法检查过滤的列表视图是否为空?
我想TextView说没有结果,如果它是空的?
我有一个列表,说我想根据搜索过滤15项,并且让我们说过滤器后我留下5,我想返回5.如果结果为空则返回0.每次我调用适配器.getCount()它经过过滤后总是返回15
编辑:这是我为测试而尝试的代码,但它总是进入Else声明.
代码示例:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_results);
Intent intent = getIntent();
String searchPhrase = intent.getExtras().getString("search");
Log.i(TAG, "Search phrase is" + searchPhrase);
mListView = (ListView) findViewById(R.id.searchResultsListView);
String[] listOfText = {"Row 1", "Row 2", "Row 3", "Row 4", "Row 5", "Row 6", "Row 7", "Row 8", "Row 9", "Row 10", "Row 11", "Row 12", "Row 13", "Row 14", "Row 15"};
ArrayList<String> rowList = new ArrayList<>();
rowList.addAll(Arrays.asList(listOfText));
mArrayAdapter = new ArrayAdapter<>(this, R.layout.search_results_row_list, rowList);
String searchQuery = searchPhrase.trim();
if (searchQuery.length() > 0) {
mArrayAdapter.getFilter().filter(searchPhrase);
mArrayAdapter.notifyDataSetChanged();
if (mArrayAdapter.getCount() == 0){
Toast.makeText(this, "Empty", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "!Empty", Toast.LENGTH_SHORT).show();
}
}
mListView.setAdapter(mArrayAdapter);
}
Run Code Online (Sandbox Code Playgroud)
谢谢
你确定这一行:
mArrayAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
被UI线程调用?如果没有,您的适配器将不知道数据更改.
UPDATE
我建议使用FilterListener,这是一个例子:
mArrayAdapter.getFilter().filter(searchQuery, new Filter.FilterListener() {
@Override
public void onFilterComplete(int count) {
if (count == 0){
Toast.makeText(MainActivity.this, "0 item", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, String.format("Items: %d", count), Toast.LENGTH_SHORT).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |