我遇到的问题是它listView.getLastVisiblePosition
总是返回 -1 所以我不能隐藏searchView
. 我在设置后立即检查它,adapter
并且在我尝试放置它的任何地方它仍然返回-1。我没有在文档中看到为什么会这样,但我想如果ListView
没有显示任何项目,它会返回 -1。但是,listView.getFirstVisiblePosition()
即使显示多个项目,也始终返回 0。
我在这里尝试了这两种方法,但是在获取错误值时并没有什么不同。
@SuppressLint("NewApi") private void setFilters(String curType, Object curFilter)
{
// initialize several lists
itemsAdapter = new ArrayAdapter<Rowdata>(this, R.layout.list_item_text, foodItems);
listView.setAdapter(itemsAdapter);
int numItems = listView.getLastVisiblePosition() - listView.getFirstVisiblePosition();
if (numItems > foodItems.length)
{ searchField.setVisibility(View.GONE); }
else
{ searchField.setVisibility(View.VISIBLE); }
}
Button
每当按下 a 或更改可以过滤列表的文本时,都会调用此方法。所以问题是为什么listView.getLastVisiblePosition()
总是返回-1,为什么listView.getFirstVisiblePosition()
总是返回0?没有错误/异常,除了没有得到预期的结果外,一切都运行良好。注意:itemsAdapter.getCount()
返回正确的值。
还有,我必须支持API >=10
编辑
如果有人需要澄清,请告诉我。但基本上,我有一个EditText
我用来搜索列表的。当列表中的项目不超过屏幕上的项目时,我想隐藏它。listView.getLastVisiblePosition()
总是返回 -1
我真的很想知道原始问题的原因,但是如果有人有更好的方法在项目都适合屏幕时隐藏搜索框,我愿意接受建议。
更新
我放了一个断点,在那里我得到了,和onItemClick()
的正确值。在此之前,我分别得到 0、-1 和。getFirstVisiblePosition()
getLastVisiblePosition()
listView.getChildCount()
null