【发布时间】:2013-12-08 14:52:57
【问题描述】:
我有一个 listfragment,它的 listview 是使用来自联系人提供程序的 cursorloader 加载的。
要求:我需要在第一次加载列表视图时使用 view.getLastVisiblePosition() 一次,并且每次有滚动时。
问题:view.getLastVisiblePosition 在 onScrollListener 中有效,但在 onActivityCreated() 或 onCreateView() 或 onViewCreated() 中总是返回 -1。
代码:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Set up ListView, assign adapter and set some listeners. The adapter was previously
// created in onCreate().
setListAdapter(mAdapter);
final ListView v = getListView();
v.setOnItemClickListener(this);
v.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState) {
// Pause image loader to ensure smoother scrolling when flinging
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
mImageLoader.setPauseWork(true);
} else {
mImageLoader.setPauseWork(false);
}
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
evaluateInviteView();
}
}
@Override
public void onScroll(AbsListView absListView, int i, int i1, int i2) {}
});
if (mIsTwoPaneLayout) {
// In a two-pane layout, set choice mode to single as there will be two panes
// when an item in the ListView is selected it should remain highlighted while
// the content shows in the second pane.
v.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
// If there's a previously selected search item from a saved state then don't bother
// initializing the loader as it will be restarted later when the query is populated into
// the action bar search view (see onQueryTextChange() in onCreateOptionsMenu()).
if (mPreviouslySelectedSearchItem == 0) {
// Initialize the loader, and create a loader identified by ContactsQuery.QUERY_ID
getLoaderManager().initLoader(ContactsQuery.QUERY_ID, null, this);
}
evaluateInviteView();
}
private void evaluateInviteView(){
final ListView v = getListView();
int LastVisiblePosition = v.getLastVisiblePosition();
Log.d("faizal","inside : " + LastVisiblePosition );
}
在另一个上下文中,getLastVisiblePosition returning -1 提出了类似的问题。一种解决方案建议在可运行文件中执行 view.getLastVisiblePosition()。但这也为我返回 -1。
【问题讨论】:
-
您找到解决方案了吗?
标签: android