Я пытаюсь изменить действие ActionBar в зависимости от того, видны ли все элементы списка (на экране меньше элементов, которые помещаются на экран => показать действие «Добавить элемент» | есть некоторые невидимые элементы => показать действие «Поиск»)
Какой метод ListFragment я должен переопределить, чтобы иметь возможность использовать getListView().getLastVisiblePosition() и получить не -1?
Это код из моего 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);
}
// ...
}
Looper.myQueue().addIdleHandler
и позвонитеgetLastVisiblePosition
внутриIdleHandler
- person pskink   schedule 17.03.2016addIdleHandler
каждый раз при изменении размера вашего адаптера. - person pskink   schedule 17.03.2016