2010-11-11 24 views
3

我有一個列表視圖,我重寫了onScroll事件,以便我可以在列表視圖的第一個可見項上獲取文本的第一個字符。我的代碼如下:有些項目在listview onScroll方法中爲null

@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個,所以它不應該爲空。

我的代碼有問題嗎?還是有更好的方式做我想要的? 在此先感謝!

回答

0

android listview在屏幕上不可見時回收列表中的「items」。所以任何不可見的東西都是空的。

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

+0

是啊..但firstVisibleItem應該是可見的吧?我從firstVisibleItem獲取當前視圖。 – junmats 2010-11-11 16:03:24

+0

這是您的適配器中第一個可見的位置。它對應於ListView中索引0的子項。 – 2010-11-11 17:32:22

+0

你對如何完成我所需要的東西有一些想法嗎?謝謝.. – junmats 2010-11-15 05:18:28