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();
}
});


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

571   15  

15 ответов:

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

android:descendantFocusability="blocksDescendants"    

... на первом родительском макете внутри списка. Это работает как магия щелчок не будет потребляться каким-либо элементом внутри списка, но будет непосредственно перейти к элементу списка.

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

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

: OnItemClickListener просто не отвечает на все!

причина: Без понятия

решение: в коде, set ImageButtonнаправлена в “false”

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

2: button.setFocusable(false);

у меня есть деятельность, которая расширяет 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!");

}

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

установить focusable как false

holder.button.setFocusable(false);

Если вы хотите включить пункт нажмите кнопку в виде списка использовать

listitem.setClickable(false);

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

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

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

ListView.setOnItemClickListener(listener);

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

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

imagebutton.setClickable(false);

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

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

mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);

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

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

    });
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();
}
 };

в Java, как другие предлагают

listitem.setClickable(false);

или в xml:

android:clickable="false"

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

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

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

просто вставьте строку в 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" />
lv.setOnItemClickListener(new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub

        }
    });

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

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

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

Comments

    Ничего не найдено.