2011-01-15 4 views
0

У меня есть listview настроенной simplecursoradapter .в каждой строки у меня есть текст и кнопкакнопку в ListView

Я хочу, чтобы нажать на кнопку как и элемент списка, но я только нажать на кнопку так, что я должен делать до onclicklistener им.

+0

Я не думаю, что «ListView» получит событие щелчка, если кнопка нажата - вы всегда можете просто вызвать событие 'onClickListener' из' ListView' из кнопки 'onClickListener' кнопки. – jcuenod

ответ

4

Вам необходимо обработать это внутри метода getView() или bindView() вашего обычая SimpleCursorAdapter.

Посмотрите на данном фрагменте кода:

public View getView(final int pos, View inView, ViewGroup parent) 
{ 
     if (inView == null) 
     { 
      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      inView = inflater.inflate(R.layout.your_custom_file, null); 
     } 
     Button btn = (Button) inView.findViewById(R.id.button); 
     btn.setOnClickListener(new OnClickListener() // Click event on button 
     {    
      public void onClick(View v) 
      { 
       // do what you want when click on button here 
      } 
     }    
     return inView; 
} 
+0

Едва ли это решение не будет работать, так как кнопка будет фокусироваться на себе, и элемент перестанет быть отображаемым. Кнопка, помещенная в строку, также должна быть неактивна (андроид: focusable = "false" в XML-макете). –

-1

Для ListView, чтобы быть интерактивными, вы можете использовать onItemClickListener

+0

Вопрос заключается в том, как отслеживать элементы и кнопки «все в одном» в одно и то же время. –

1

Если вы посмотрите на исходный код для приложения будильника, вы будете видеть эту функциональность в пользовательском макете, который используется для элемента списка

/** 
* Special class to to allow the parent to be pressed without being pressed 
* itself. This way the time in the alarm list can be pressed without changing 
* the background of the indicator. 
*/ 
public class DontPressWithParentLayout extends RelativeLayout { 

public DontPressWithParentLayout(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
public void setPressed(boolean pressed) { 
    // If the parent is pressed, do not set to pressed. 
    if (pressed && ((View) getParent()).isPressed()) { 
     return; 
    } 
    super.setPressed(pressed); 
} 
} 

Затем они устанавливают clickHandlers как для элемента списка и кнопки в а которые они используют.

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