如何获取AdapterView中当前显示的项目?

Krz*_*iec 19 android view adapter

如标题所示:我想知道如何获取AdapterView中所有当前显示项目的列表(数组).
为什么?我的AdapterView中显示的对象需要在用户关闭AdapterView后释放侦听器.我需要这样做才能优化我的应用.
或者是否有任何方法(我可以覆盖)在视图的破坏上执行?

MKB*_*MKB 29

实现OnScrollListener

public class NewsCategoryDC extends Activity implements OnScrollListener {
Run Code Online (Sandbox Code Playgroud)

并在listView中设置OnScrollListener

listView.setOnScrollListener(NewsCategoryDC.this);
Run Code Online (Sandbox Code Playgroud)

并且您可以获得第一个和最后一个可见行

@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) {}
Run Code Online (Sandbox Code Playgroud)

试试这个..,.

如果你有其他最好的方式请发帖,这是非常有用和好的问题..,.

谢谢..,.

编辑............................

在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));
    }
}
Run Code Online (Sandbox Code Playgroud)


Koo*_*oki 6

小提示:

如果你想获得所有完全可见的元素( - >期望那些,位于底部或顶部且几乎不在屏幕之外的元素),你应该看看这篇文章:

仅查看完全可见的ListView项目