0

我正在构建一个包含4个选项卡的Android应用程序,每个选项卡都包含附加到游标适配器的片段。每个片段都包含一个项目列表。如果我在任何列表中滚动很多,我必须滚动很多才能到达顶部。我希望它的行为如下所示:当我单击当前选项卡图标时,它会自动回滚到顶部。我怎样才能实现这个功能?包含列表滚动到顶部的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; 
} 

回答

0

选项卡改变了你可以刷新列表视图:

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

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

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); 
} 
+0

请参阅问题描述中的编辑1 – 2015-02-05 19:02:21

0

根据您的问题,您需要到片列表滚动到顶部。你可以通过调用下面的函数做到这一点:

getListView().smoothScrollToPosition(0); 

这getlistView返回您的片段的Lis​​tView;

+0

这出现在低质量的审查队列中。我可能会猜想,这是因为你没有补充说明你为什么认为这是解决方案。我会建议编辑你的答案,以解释你如何来到它。 – AdamMc331 2015-02-21 20:06:06