0

Я создаю приложение для Android, содержащее 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; 
} 

ответ

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

см. Edit1 в описании вопроса –

0

на основе вашей проблемы вам нужно прокрутить список фрагмента к вершине. вы можете сделать это, позвонив по следующей функции:

getListView().smoothScrollToPosition(0); 

, который getlistView возвращает ваш фрагмент ListView;

+0

Это появилось в очереди низкого качества обзора. Я бы предположил, что это потому, что вы не добавили никаких объяснений, почему вы считаете, что это решение. Я бы рекомендовал изменить ваш ответ, чтобы объяснить, как вы к нему пришли. – AdamMc331