gpt4 book ai didi

android - 代码中如何/在何处检测 ListFragment ListView 中的所有项目是否可见?

转载 作者:行者123 更新时间:2023-11-29 17:22:44 24 4
gpt4 key购买 nike

我正在尝试根据所有列表项是否可见来更改 ActionBar 的操作(适合屏幕的项目较少 => 显示“添加项目”操作 | 有一些项目不可见 => 显示“搜索”操作)

为了能够使用 getListView().getLastVisiblePosition() 而不是 -1,我应该重写 ListFragment 的什么方法?

这是来 self 的 ListFragment 的代码,但在 onCreateOptionsMenu 中 lv.getLastVisiblePosition() 总是返回 -1。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.list, menu);

final MenuItem search = menu.findItem(R.id.menu_item_search);
final MenuItem add = menu.findItem(R.id.menu_item_add_item);

final ListView lv = getListView();
if (lv.getFirstVisiblePosition() == 0 && lv.getLastVisiblePosition() == mAdapter.getCount()-1) {
// all items visible: show add, hide search
search.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
} else {
// not all items visible: show search, hide add
add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
// ...
}

最佳答案

getLastVisiblePosition 仅当适配器的项目被添加并通过软管 ListView 布局时返回有效位置,我不知道询问 ListView< 的任何方法 当它发生时,最好的选择就是在 UI 线程阻塞等待更多消息时监听:

Looper.myQueue().addIdleHandler

并在 IdleHandler#queueIdle() 中调用 getLastVisiblePosition()

关于android - 代码中如何/在何处检测 ListFragment ListView 中的所有项目是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36055179/

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