ListView с OnItemClickListener android

Я использую ListView с помощью RatingBar и ImageButton. Вот моя проблема: когда я нажимаю на ListView, мой OnItemClickListener не работает. Пожалуйста, помогите мне. Код:

ListView lv = getListView();
setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
    }
});

Спасибо заранее!

Ответ 1

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

android:descendantFocusability="blocksDescendants"    

... на первом родительском макете внутри списка. Это работает как волшебство, клик не будет потребляться каким-либо элементом внутри списка, но будет напрямую переходить к элементу списка.

Ответ 2

Эй, проверьте это, работает для меня... надеюсь, что это сработает и для вас.

Если элемент списка содержит ImageButton

Проблема: OnItemClickListener просто не отвечает вообще!

Причина: Идея

Решение: в коде установите ImageButton focus на "false"

1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);

2: button.setFocusable(false);

Ответ 3

У меня есть Activity, который расширяет ListActivity.

Я попытался сделать что-то подобное в onCreate:

ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {

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

        Log.i("Hello!", "Y u no see me?");

    }

});

Но это не сработало.

Вместо этого мне просто нужно было переопределить onListItemClick:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

    Log.i("Hello!", "Clicked! YAY!");

}

Ответ 4

если в представлении элемента списка есть кнопка или флажок или кнопка изображения, onitemclicklistener и onitemlongclicklistener, не работающие из-за этого, имеют собственный прослушиватель onclick.

установить фокусное значение как false

holder.button.setFocusable(false);

Ответ 5

Если вы хотите включить элемент, нажмите в режиме просмотра списка

listitem.setClickable(false);

это может показаться неправильным на первом месте, но оно работает!

Ответ 6

1) Проверьте, используете ли вы OnItemClickListener или OnClickListener (который не поддерживается ListView)
Документация для разработчиков Android DeveloperView

2) Проверьте, правильно ли вы добавили Listener в свой ListView. Он подключался к ListView не к ListAdapter!

ListView.setOnItemClickListener(listener);

3) Если вам нужно использовать OnClickListener, проверьте, используете ли вы DialogInterface.OnClickListener или View.OnClickListener (их можно легко обменивать, если не проверять или использовать их оба)

Ответ 7

Если вы определяете свой ListView программно:

mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);

Ответ 8

setClickable как false для ImageButton, как этот

imagebutton.setClickable(false);

а затем выполните OnItemClickListener в listview.

Ответ 9

listPaired = (ListView) findViewById(R.id.listView1);
listPairedData = new ArrayList<String>();
araPaired = new ArrayAdapter(this, android.R.layout.simple_list_item_1, listPairedData);
listPaired.setAdapter(araPaired);
listPaired.setOnItemClickListener(listPairedClickItem);

private OnItemClickListener listPairedClickItem = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

String info = ((TextView) arg1).getText().toString();
Toast.makeText(getBaseContext(), "Item "+info, Toast.LENGTH_LONG).show();
}
 };

Ответ 10

Вы также можете использовать "лямбда", синтаксис Lambda не поддерживается под Java 1.7 или более ранними версиями JVM.

    listView.setOnItemClickListener((parent, view, position, id) -> {

    });

Ответ 11

В Java, как и другие, предлагайте

listitem.setClickable(false);

Или в xml:

android:clickable="false"

Он работает очень хорошо

Ответ 12

Есть ли и изображение в просмотре списка, которое вы используете > затем перейдите по ссылке: http://vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-select-multiple/

Я думаю, что когда вы работаете над ссылкой, которую я предоставил, каждая вещь будет работать нормально, я пробовал это. Если вы хотите уточнить ответ, пожалуйста, уточните вопрос с кодом и описанием.

Ответ 13

Просто вставьте строку в RatingBar:

android:isIndicator="true"

В XML это выглядит так:

<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="6dp"
    android:isIndicator="true"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false" />

Ответ 14

lv.setOnItemClickListener(new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub

        }
    });

Ответ 15

Android OnItemClickLIstener конфликтует с OnClickListener элементов строки listview в Adapter. Вам просто нужно убедиться, что ваш код хорошо управляется и правильно написан со стандартами.

Проверьте ответ в приведенной ниже ссылке:

Сделать список кликабельным