Подтвердить что ты не робот

Как получить элементы, отображаемые в AdapterView?

Как и в заголовке: Я хотел бы знать, как получить список (массив) всех отображаемых в данный момент элементов в моем AdapterView.
Зачем? Объекты, отображаемые в моем адаптере, требуют освобождения слушателя после того, как пользователь закрывает AdapterView. Мне нужно сделать это, чтобы оптимизировать мое приложение.
Или существует какой-либо метод (который я мог бы переопределить), который выполняется при уничтожении представлений?

4b9b3361

Ответ 1

реализует OnScrollListener

public class NewsCategoryDC extends Activity implements OnScrollListener {

и установите OnScrollListener в listView

listView.setOnScrollListener(NewsCategoryDC.this);

и вы можете получить первые и последние видимые строки

@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
    firstVisibleRow = listView.getFirstVisiblePosition();
            lastVisibleRow = listView.getLastVisiblePosition();
/*Now you get the first and last visible rows, and you easily get the rows from first to last visible row and allocate resources to visible rows or deallocate resources to rows except visible rows..,.*/
}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}

ПОПРОБУЙТЕ ЭТО..,.

и если какой-нибудь другой лучший способ, который вы получили, напишите, это очень полезный и хороший вопрос..,.

Спасибо..,.

ИЗМЕНИТЬ............................

добавить код в метод onScroll()

@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
    int firstVisibleRow = listView.getFirstVisiblePosition();
    int lastVisibleRow = listView.getLastVisiblePosition();

    for(int i=firstVisibleRow;i<=lastVisibleRow;i++)
    {
        //Write your code here(allocation/deallocation/store in array etc.)
        System.out.println(i + "=" + listView.getItemAtPosition(i));
    }
}

Ответ 2

Как небольшой намек:

Если вы хотите получить все элементы, которые полностью видимы (- > ожидайте тех, кто находится внизу или сверху и почти вышли из экрана), вы должны посмотреть этот пост:

Смотрите только полностью видимые элементы ListView