【问题标题】:Some items are null in listview onScroll methodlistview onScroll 方法中的某些项目为空
【发布时间】:2011-05-08 13:25:15
【问题描述】:

我有一个列表视图,并为它覆盖了 onScroll 事件,以便我可以在列表视图的第一个可见项上获取文本的第一个字符。我的代码如下:

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
    //
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
           int visibleItemCount, int totalItemCount) {
    ListView caller = (ListView) view;
    View v = caller.getChildAt(firstVisibleItem);
    if(v instanceof TextView){
        TextView tv = (TextView) v;
        if(tv != null){
            String sInitial = tv.getText().toString(); 
            sInitial = Character.toString(sInitial.charAt(0));

            TextView tvPager = (TextView) findViewById(R.id.tvPager);
            tvPager.setText(sInitial);
        }
    }
}

当 FirstVisibleItem 变量从 0 到 12(准确地说)时,我的 View v 不为空,我可以得到它的文本。但是当它超过 12 时,我的 v 已经为空。我的项目超过 12 个,所以它不应该为空。

我的代码有问题吗?还是有更好的方法做我想做的事? 提前致谢!

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    当列表中的“项目”在屏幕上不可见时,Android 列表视图会回收它们。所以任何不可见的都是空的。

    http://commonsware.com/Android/excerpt.pdf

    【讨论】:

    • 是的.. 但是 firstVisibleItem 应该是可见的吧?我正在从 firstVisibleItem 获取当前视图。
    • 这是适配器中的第一个可见位置。对应ListView中索引为0的child。
    猜你喜欢
    • 2015-12-03
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2023-03-09
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多