У меня есть ListView с огромным объемом данных, но когда я перехожу на следующую страницу в ListView Item, нажмите и вернусь в ListView. Я хочу, чтобы список прокручивался до той же точки, что и раньше . Может ли кто-нибудь помочь в этом.

Я пробовал этот код. Список прокручивается до той же точки, но сразу переходит на первую позицию.

private void populateList() {
        descArray.clear();
        List<All_Post> allDesc = dbhelper.getAllDescriptions();
        for (All_Post all_Post : allDesc)
        {
            descArray.add(all_Post);
        }

        if (adapter == null)
        {
            adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
            listView.setAdapter(adapter);
        }
        else if (adapter != null) {


            adapter.notifyDataSetChanged();
            adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
            listView.setAdapter(adapter);
            //int firstPosition = listView.getFirstVisiblePosition();
            //listView.setSelection(firstPosition);

            int index = listView.getFirstVisiblePosition();
            View v = listView.getChildAt(0);
            int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop());
            listView.setSelectionFromTop(index, top);
        }
    }
2
p. ld 7 Янв 2016 в 08:05

4 ответа

Лучший ответ

Это свойство списка по умолчанию.

if you move to next page on ListView Item Click and come back to ListView it will show same position.

Просто имейте в виду, что вам не следует обновлять просмотр списка с помощью backpressed (), или когда вы возвращаетесь к просмотру списка, или любым другим способом, который вы используете для возврата к просмотру списка .

3
Amit Vaghela 7 Янв 2016 в 05:28

Вы можете отслеживать позицию в saveInstanceState, а затем получать ту же позицию, когда вы возвращаетесь к тому же действию (если вы уничтожаете действие) или когда вы щелкаете элемент, вы можете сохранить позицию и использовать ее (если вы не разрушают активность).

Затем, когда у вас появится позиция, вы можете использовать:

Для прямой прокрутки используйте: getListView (). SetSelection (position);

Для плавной прокрутки используйте: getListView (). SmoothScrollToPosition (position);

1
Ayush 7 Янв 2016 в 05:31

Вы можете сохранить позицию щелчка элемента представления списка в OnItemClickListener вашего listView . используйте эту позицию, когда вернетесь в listView , и прокрутите до этой позиции, используя

- listView.smoothScrollToPosition (position)
2
Mayank Patel 7 Янв 2016 в 05:34

Попробуйте это: public int pos_clicked = -1; on list view item click : pos_clicked = listView.getFirstVisiblePostion();

по возвращении: if(pos_clicked != -1) listView.setSelection(pos_clicked);

1
nikk 7 Янв 2016 в 05:56