GridView не активируется - PullRequest
       1

GridView не активируется

2 голосов
/ 16 сентября 2010

У меня есть следующий макет:

<?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>

Теперь я использую собственный Адаптер, который раздувает мои собственные представления и устанавливает их в качестве элементов в виде сетки, и устанавливаю слушателя на щелчки в виде сетки.1004 *

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) {
       ...
   }
});

Проблема в том, что слушатель не стреляет, если я нажимаю на одну из ячеек в виде сетки.Если я использую трекпад для перемещения по сетке и нажимаю трекпад, слушатель стреляет.Может быть, есть какой-то другой вид, который захватывает щелчок?Мой пользовательский вид состоит из LinearLayout с ImageView и TextView, который я прочитал, что надувание макета для gridView вызвало проблему в некоторых местах.

Как сделать элементы сетки активными для щелчка?

Редактировать Нет разницы между надуванием макета в моем адаптере или просто созданием одного представления и возвратом этогодля мобильного телефона.

Ответы [ 2 ]

15 голосов
/ 17 сентября 2010

Хорошо, очень-очень глупая ошибка с моей стороны. Я повторно использовал другой адаптер, который деактивировал представления внутри него.

Чтобы вы все знали, если вы установите это в своем адаптере

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

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

Виды не будут кликабельными. Как и положено;)

0 голосов
/ 16 сентября 2010
  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
        }
 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...