包含列表滚动到顶部的Android选项卡

时间:2015-02-05 18:18:22

标签: android tabs scroll simplecursoradapter android-cursoradapter

我正在构建一个包含4个选项卡的android应用程序,每个选项卡包含一个附加到游标适配器的片段每个片段都包含一个项目列表。如果我在任何列表中向下滚动很多,我必须滚动很多才能到达顶部。我希望它的行为如下:当我点击当前标签图标时,它将自动滚动回顶部。我该如何实现此功能?

编辑1: 这就是它的实现方式: -

public class OutboxFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {

OutboxListAdapter mAdapter;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mAdapter = new OutboxListAdapter(getActivity(),R.layout.outbox_list_item, null, 0);
    setListAdapter(mAdapter);
    getLoaderManager().initLoader(0, null, this);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_outbox, container, false);
    return view;
}

2 个答案:

答案 0 :(得分:0)

在更改选项卡上,您可以刷新列表视图:

MyAdapter myAdapter = new MyAdapter(mContext, items);
mListView.setAdapter(myAdapter);
mListView.setSelection(0);

不是设置新的适配器(导致ListView重置其状态),而只需更新已在ListView上设置的适配器的内容。 您可以为适配器创建一个refill()方法:

public void refill(List<EventLog> events) {
    mEvents.clear();
    mEvents.addAll(events);
    notifyDataSetChanged();
}

并在onTabChanged上调用它:

if (mListView.getAdapter() == null) {
    MyAdapter myAdapter = new MyAdapter(mContext, items);
    mListView.setAdapter(myAdapter);
} else {
    ((MyAdapter)mListView.getAdapter()).refill(items);
}

答案 1 :(得分:0)

根据您的问题,您需要将片段列表滚动到顶部。您可以通过调用以下函数来执行此操作:

getListView().smoothScrollToPosition(0);

getlistView返回你的片段ListView;