Элемент ListView не активируется - PullRequest
0 голосов
/ 28 октября 2011

У меня есть ListView с SimpleCursorAdapter.В макете использовался LinearLayout, но при чтении руководств по потреблению памяти для сложных (вложенных) макетов я переключился на RelativeLayout, и мне удалось настроить макет именно так, как я хочу.

Теперь есть одингалтель.В эмуляторе я не могу щелкнуть пункты списка.Кажется, что элементы - это одна большая кнопка «без кнопки».Однако, если я использую стрелки эмулятора и выбираю элемент списка (выделяет его) и нажимаю кнопку, он работает нормально.

Почему я не могу "щелкнуть" по элементам списка, поскольку я переключился на RelativeLayout?

Вот XML:

<?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="wrap_content" >

  <TextView
    android:id="@+id/locationName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Junk text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

  <TextView
    android:id="@+id/numStores"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/locationName"
    android:text="Junk text #1: 117"
    android:textSize="10dp" />

  <TextView
    android:id="@+id/numItems"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/numStores"
    android:text="Junk text #2: 42"
    android:textSize="10dp" />
</RelativeLayout>

Я даже пытался android:clickable="true" для RelativeLayout, но безрезультатно.

EDIT Код для onClick выглядит следующим образом:

listItems.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    int countyID = cursor.getInt(cursor.getColumnIndex(LocationDB.C_ID));
    int numItems = cursor.getInt(cursor.getColumnIndex(LocationDB.C_NUM_ITEMS));
    int numStores = cursor.getInt(cursor.getColumnIndex(LocationDB.C_NUM_STORES));
    String countyName = cursor.getString(cursor.getColumnIndex(LocationDB.C_NAME));
    String foo = String.format(TAG + "Clicked ID #%d (%s), stores = %d, items = %d", countyID, countyName, numStores, numItems);
    Log.i(LOG_TAG, foo);

    // Show the item in a new activity
    Intent apan = new Intent(avBase, Browser.class);
    apan.putExtra("countyID", countyID);
    startActivity(apan);
  }
});

РЕДАКТИРОВАТЬ 2

Код теперь проверен на моем телефоне, и я получаю ту же ошибку;не может щелкнуть элементы при использовании RelativeLayout.

Ответы [ 2 ]

4 голосов
/ 29 октября 2011

Я тоже столкнулся с некоторыми проблемами, которые, по-видимому, были связаны с комбинацией ListView прослушивателей кликов и тех, которые я назначил каждому отдельному элементу в своем Adapter.

В моем Adapter.getView() я должен был убедиться, что элементы были настроены следующим образом:

item.setLongClickable( false );
item.setClickable( false );
item.setOnClickListener( null ); 

, в то время как мой ListView должен был иметь OnItemClickListener и / или его OnItemLongClickListenerset.

Включение кликов по отдельным элементам и в просмотре списка не будет работать.Может быть, это тоже причина твоей проблемы.

1 голос
/ 29 октября 2011

Кажется, это ошибка, которую Google игнорирует: http://code.google.com/p/android/issues/detail?id=3414

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...