2013-08-29 83 views
1

我最近想出瞭如何實例化ListView,並使用onAnimationEndperformItemClick,我能夠以編程方式單擊ListView中的第一項。執行performItemClick

這個解決方案很好用,但我的問題是,如果ListView包含太多項目以適應屏幕上,ListView其他項目被選中,而不是隻有一個。有誰知道爲什麼發生這種情況,以及如何解決它?

@Override 
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) { 
    if (savedInstanceState == null) { 
     Animation anim = AnimationUtils.loadAnimation(getActivity(), nextAnim); 

     anim.setAnimationListener(new AnimationListener() { 

      public void onAnimationStart(Animation animation) {} 

      public void onAnimationRepeat(Animation animation) {} 

      public void onAnimationEnd(Animation animation) { 
       mListView.performItemClick(mListView, 0, mListView.getItemIdAtPosition(0)); 
      } 
     }); 
     return anim; 
    } else { 
     return super.onCreateAnimation(transit, enter, nextAnim); 
    } 
} 
+2

問題。張貼您的適配器。 – njzk2

+0

new SimpleCursorAdapter(mContext,R.layout.biditems_row,null,from,to,0); ...? – user1549672

+0

我想你可能是對的。 http://stackoverflow.com/questions/18513726/same-view-jumps-around-in-listview – user1549672

回答

4

嘗試用視圖回收

mListView.performItemClick(mListView.getAdapter().getView(your_click_position, null, null), your_click_position, mListView.getItemIdAtPosition(your_click_position)); 

或者

mListView.performItemClick(mListView.getChildAt(your_click_position), your_click_position, mListView.getItemIdAtPosition(your_click_position)); 

,而不是

mListView.performItemClick(mListView, 0, mListView.getItemIdAtPosition(0)); 
+0

似乎沒有區別 – user1549672

+0

你傳遞0硬編碼,因此,如果你向下滾動列表將導致問題,因爲在列表視圖回收,因此,如果你通過項目點擊的位置,它會工作。 –

+0

啊,似乎我真的不明白如何ListViews工作。請看看我的新問題:http://stackoverflow.com/questions/18513726/same-view-jumps-around-in-listview – user1549672