2011-08-17 96 views
4

我用ImageView和TextViews創建了一個自定義listView,並且所有東西都正常工作,直到我試圖實現onItemClick,它暫時僅顯示一個Toast。爲什麼ListView項目在滾動後變得不可點擊

當我向下滾動我的ListView時,會發生問題:它不會收到任何點擊。

有趣的是,當我使用鍵盤從項目移動到項目它的工作原理,當我按下回車鍵的吐司顯示

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    RestaurantReservationBean clickedItem = resultArray.get(position); 

    Toast.makeText(this, clickedItem.getName()+", "+clickedItem.getCost(), 1000).show(); 
} 

這是我用來onItemClick監聽器的代碼。

+2

請發佈與您的ListView相關的所有代碼。您用來加載它的適配器,以及您用來獲取點擊回調的onClickListener。沒有這個代碼,任何人都不可能提供幫助。 – FoamyGuy

+0

它的政治影響力......換句話說......如果沒有代碼的一部分(包括java和xml),就不可能回答這個問題 – Selvin

回答

10

我想我解決了這個問題:通過一些文檔後,我發現這個問題來自textviews和imagesview在每一行的頂部,它阻止了onitemselected的聽衆。所以我嘗試刷新滾動後的列表視圖,它工作得很好。這是我希望它會幫助那些可能會遇到這個問題的人

listView.setOnScrollListener(new OnScrollListener() { 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) 
      { 
       listView.invalidateViews(); 
      } 

     } 

     @Override 
     public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {} 
    }); 
+0

非常感謝,這是一個奇怪的問題,我幫你解決了這個問題。 :) –

+0

我也有一個非常奇怪的問題,如果我通過後退按鈕從另一個Activity返回到GridView活動,GridView變得無法點擊。這隻發生在Honeycomb上。在onResume()中放入invalidateViews()調用似乎可以解決問題。 –