OnListItemclick должен реагировать только на нажатие кнопки

У меня есть список с настраиваемым адаптером и реализован onListItemClick. У меня есть компоненты для каждой строки, и при нажатии на что-то в строке запускается действие. Интересно, как я могу установить это, только если вы нажмете кнопку, запускающую действие, а не при случайном нажатии в строке? Или лучше установить onClick в самом адаптере для каждой кнопки?

Расширяет ListActivity:

@Override
protected void onListItemClick(ListView l, View v, int pos, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, pos, id);

            Intent i = new Intent(LevelMenu.this,AreaMenu.class);
            i.putExtra("level_value", (pos+1));
            startActivity(i);



    }
}

Кнопка :

<Button
    android:id="@+id/level"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/unlock"
    android:layout_centerHorizontal="true"
    android:focusable="false"
    android:clickable="false"
    android:text="Play" />

Посмотреть список:

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="@null"
    android:dividerHeight="15dp" />

person David    schedule 31.03.2013    source источник
comment
привет, я думаю, это поможет вам: stackoverflow.com/questions/10134569/   -  person Smartoop    schedule 01.04.2013
comment
установите onclick Listener для вашей кнопки в customAdapter, поместите туда свой код ..   -  person Pragnani    schedule 01.04.2013
comment
@David Эта кнопка находится внутри списка.   -  person Yugesh    schedule 01.04.2013
comment
Нет, это внутри моего макета.   -  person David    schedule 01.04.2013
comment
Вы можете установить OnClickListener для той кнопки, которую вы упомянули в своей строке, и удалить onItemClickListener из вашего listView. Так что он запустится только тогда, когда вы нажмете кнопку.   -  person yahya    schedule 01.04.2013


Ответы (2)


Не увидеть, как вы это делаете на самом деле, это может быть сложно. Что вы можете сделать, если у вас есть только общий onClick, вы можете проверить, что View v равно instanceof Button, затем захватить идентификатор, тег или что-то еще с кнопки и использовать его для запуска своей активности.

public void onClick(View v){
    if( v instanceof Button){
        //a button was clicked!
    }
}
person ElefantPhace    schedule 31.03.2013

в baseAdapter есть метод setEnable, если вы не хотите, чтобы вызывался onItemClick, просто верните из него false.

В вашем случае передайте одно значение boolean из onClick вашей кнопки, и на основе этого вы можете вернуть true из false.

person Ankit    schedule 01.04.2013