2015-11-16 7 views
0

У меня есть некоторая путаница при изучении прокрутки. Я не понимаю, что делает позиция в getItem (int position), к чему это относится? Позиция в адаптере? В документе говорится, что getItem (int position) вызывается только тогда, когда фрагмент не существует и что это значит?Использование FragmentStatePagerAdapter

Я узнал, как использовать ArrayAdapter, и мы должны передать массив в ArrayAdapter, но почему нам не нужно передавать массив фрагмента в FragmentStatePagerAdapter?

И последнее, что я хочу сделать: у меня есть ListView, содержащий несколько элементов, и если я нажму на него, он просто покажет имя элемента в других действиях (это уже сделано), затем я могу пронести влево и право просмотра других элементов в списке. Как я мог это сделать? Мне также нужно получить позицию позиции в ListView?

+0

@i не понял ваши требования. У вас возникли какие-либо проблемы с просмотром пейджера, который не нашел текущий активный фрагмент? – Ramesh

+0

хорошо, подобный. Я не совсем понимаю, как слова пейджера. Как они «адаптируют» другой фрагмент? –

+0

Если вам нужна текущая ссылка на фрагмент, то перейдите с помощью find по тегу – Ramesh

ответ

0

Ну, из моего опыта getItem(int position) возвращает то, что вы хотите, чтобы он вернулся. Вы можете видеть, что тип возврата метода - Object, поэтому вы можете отправить что-либо из этого метода. Теперь, если я не ошибаюсь, ваша потребность в щелчке каждого элемента ListView, вы хотите получить текст элемента, а getItem(int position) - это именно то, что вам нужно.

Предположим, у вас есть архаист по имени listViewText. После этого вы можете определить выше метод как

@Override 
public Object getItem(int position){ 
    return listViewText.get(position); 
} 

и от активности вызовов вы можете вызвать его, когда элемент щелкнуло

String listItemText; 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      listItemText=adapter.getItem(position); 
     } 
    }); 

где адаптер вашего ListView адаптер

Update

Это было для адаптеров ListView. Теперь о вашей путанице в отношении FragmentStatePagerAdapter, я думаю, что документация пытается сказать, что, чтобы уменьшить потребление памяти, как в FragmentPagerAdapter, адаптер использует метод getItem(int position) только в начале, когда нет состояния фрагмента. , Это означает, что первый фрагмент загружен. Теперь, когда конкретный фрагмент откручивается, адаптер сохраняет текущие состояния фрагмента (содержимого и т. Д.), И, когда позже фрагмент будет прокручен, адаптер восстановит сохраненные состояния, а не создаст новый фрагмент, и, следовательно, вызовет только этот метод один раз.

Обратите внимание, что адаптер может также вызывать getItem(int position), если каким-то образом теряется состояние конкретного фрагмента.

+0

Я хочу спросить о методе getItem() в классе pagerfragmentadapter, но нет в адаптере ListView –

+0

@Чик Кван Ли сожалеет о моей ошибке.См. Мой обновленный вопрос о вашем замешательстве. Надеюсь, что это поможет вам –