2010-09-16 67 views
2

我有以下佈局:GridView控件無法點擊

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <GridView 
     android:id="@+id/grid" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentTop="true" 
     android:numColumns="auto_fit" 
     android:verticalSpacing="5dip" 
     android:horizontalSpacing="2.5dip" 
     android:columnWidth="100px" 
     android:stretchMode="columnWidth" 
     android:gravity="center" 
     android:listSelector="@drawable/transparent" 
     android:padding="5dip" 
     android:scrollbarStyle="outsideOverlay" 
     android:clickable="true" /> 

</RelativeLayout> 

現在我用的是膨脹了自己的看法,並將其作爲在GridView的項目,並設置一個監聽器GridView中點擊自定義適配器。

GridView grid = (GridView) findViewById(R.id.grid); 
grid.setAdapter(new ProductAdapter(getApplicationContext(), products)); 
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     ... 
    } 
}); 

問題是,如果我按下gridview中的一個單元格,偵聽器不會觸發。如果我使用觸控板在網格中四處瀏覽,並且按下監聽器正在觸發的觸控板。難道是有一些其他視圖捕獲點擊?我的自定義視圖由帶有ImageView和TextView的LinearLayout組成,我讀了一些擴展gridview的佈局在某些地方導致問題的東西。

如何讓網格物品可點擊?

編輯膨脹我的適配器中的佈局或只是實例化單個視圖並將其返回給cellview沒有區別。

回答

14

好吧,我非常非常愚蠢的錯誤。我重新使用了另一個適配器,該適配器停用了其中的視圖。

對於大家都知道,如果你設置這個適配器

@Override 
public boolean areAllItemsEnabled() { 
    return false; 
} 

@Override 
public boolean isEnabled(int position) { 
    return false; 
} 

的意見將無法點擊裏面。就像它打算成爲的一樣;)

+0

如果我將它們計爲正確的,可能是24,那麼大概有25個重複項。但是它們都沒有意義,我還沒有測試您的答案,但我認爲我不需要,因爲它會產生很多感受。 – 2017-01-09 18:35:44

0
GridView grid = (GridView)findViewById(R.id.grid); 
    grid.setOnItemClickListener(mOnClickGridCell); 

OnItemClickListener mOnClickGridCell = new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // Do stuff 
     } 
}; 
+1

你能告訴我方法之間的差異嗎? – pengwang 2010-09-17 01:59:32

+0

將適配器首先聲明爲局部變量是否有區別?這將是一件非常奇怪的事情。我改變了你的代碼,使它看起來像你的例子,正如預期的那樣,它不會改變代碼的行爲。 – Janusz 2010-09-17 07:12:34