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