代码之家  ›  专栏  ›  技术社区  ›  junmats

ListView OnScroll方法中的某些项为空

  •  3
  • junmats  · 技术社区  · 15 年前

    我有一个listview,我重写了它的onscroll事件,这样我就可以在listview的第一个可见项上获取文本的第一个字符。我的代码如下:

    @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(精确地说)时,我的视图v不是空的,我可以得到它的文本。但当它超过12时,我的v已经是空的。我的物品超过12件,所以不应该是空的。

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

    1 回复  |  直到 11 年前
        1
  •  0
  •   W.Jackson    15 年前

    当列表中的“项目”在屏幕上不可见时,Android ListView会回收这些项目。所以任何不可见的都将是空的。

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