GridView不可点击

时间:2010-09-16 14:00:03

标签: android 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) {
       ...
   }
});

问题是如果我按下网格视图中的一个单元格,则侦听器不会触发。如果我使用触控板在网格中导航并按下触控板触发器触发。是否有其他视图捕获点击?我的自定义视图包含一个带有ImageView和TextView i读取的LinearLayout,它为gridview的布局膨胀导致某些地方出现问题。

如何使网格中的项目可点击?

编辑在我的适配器中展开布局或仅实例化单个视图并将其返回到单元格视图之间没有区别。

2 个答案:

答案 0 :(得分:15)

我非常非常愚蠢的错误。我重用了另一个停用其中视图的适配器。

大家都知道你是否在适配器中设置了这个

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

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

视图无法点击。正如它的目的一样;)

答案 1 :(得分: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
        }
 };