2010-11-19 4 views
0

У меня есть представление списка с 2 кнопками в каждой строке. Я использую cursoradpater для заполнения списка.OnClickListener в Listview, заполненном CursorAdapter

Я также использую шаблон держателя вида для newview() bindview().

Мои вопросы: Где я могу добавить кнопки для кнопок, зная, что действие для кнопки отличается от действия самого элемента списка? У меня есть onListItemClick?

ответ

1

Вам не нужно onListItemClick

Вы можете попробовать обязательные для каждого из вашей кнопки события в адаптере

final Button button = (Button) findViewById(R.id.button_id); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
     }); 

, но, вероятно, это не будет работать на элементе списка, так что вам нужно новый aproach, как это описано в button documentation.

Однако вместо применения OnClickListener к кнопке в вашей деятельности вы можете назначить метод своей кнопке в макете XML, используя атрибут android: onClick. Например:

<Button 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="@string/self_destruct" 
    android:onClick="selfDestruct" /> 

Теперь, когда пользователь нажимает на кнопку, то Android система вызывает метод своей деятельности в selfDestruct (View). Чтобы это сработало, метод должен быть общедоступным и принимать в качестве единственного параметра View. Например:

public void selfDestruct(View view) { 
    // Kabloey 
} 

Вид, переданный в метод, является ссылкой на виджет, который был нажат.

+0

Но это не даст мне позицию элемента, который нажал. Я имею в виду, в какой строке нажата кнопка. – Mak

+0

Вы можете 'setTag()' на кнопке, чтобы установить сложный идентификатор, в котором вы нуждаетесь. И вы прочитаете из переданного параметра представления через 'getTag()' – Pentium10

Смежные вопросы