У меня есть listview
настроенной simplecursoradapter
.в каждой строки у меня есть текст и кнопкакнопку в ListView
Я хочу, чтобы нажать на кнопку как и элемент списка, но я только нажать на кнопку так, что я должен делать до onclicklistener
им.
У меня есть listview
настроенной simplecursoradapter
.в каждой строки у меня есть текст и кнопкакнопку в ListView
Я хочу, чтобы нажать на кнопку как и элемент списка, но я только нажать на кнопку так, что я должен делать до onclicklistener
им.
Вам необходимо обработать это внутри метода 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;
}
Едва ли это решение не будет работать, так как кнопка будет фокусироваться на себе, и элемент перестанет быть отображаемым. Кнопка, помещенная в строку, также должна быть неактивна (андроид: focusable = "false" в XML-макете). –
Для ListView, чтобы быть интерактивными, вы можете использовать onItemClickListener
Вопрос заключается в том, как отслеживать элементы и кнопки «все в одном» в одно и то же время. –
Если вы посмотрите на исходный код для приложения будильника, вы будете видеть эту функциональность в пользовательском макете, который используется для элемента списка
/**
* 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
как для элемента списка и кнопки в а которые они используют.
Я не думаю, что «ListView» получит событие щелчка, если кнопка нажата - вы всегда можете просто вызвать событие 'onClickListener' из' ListView' из кнопки 'onClickListener' кнопки. – jcuenod