У меня есть виджет для домашних скриптов, и я генерирую некоторые элементы внутри (у меня есть макет этого элемента) виджет и настройка некоторых слушателей на них. Это очень просто, как это:Слушатели для динамически созданных объектов
RemoteViews currentItem1 = new RemoteViews(context.getPackageName(), R.layout.complex_list_item);
updateViews.addView(R.id.panelNews, currentItem1);
Intent intent1 = new Intent(context, ForexWidget.class);
intent1.setAction(Constants.ACTION_PRESSED_ITEM);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, intent1, 0);
updateViews.setOnClickPendingIntent(R.id.singleLine, pendingIntent1);
RemoteViews currentItem2 = new RemoteViews(context.getPackageName(), R.layout.complex_list_item);
updateViews.addView(R.id.panelNews, currentItem2);
Intent intent2 = new Intent(context, ForexWidget.class);
intent2.setAction(Constants.ACTION_PRESSED_ITEM);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, intent2, 0);
updateViews.setOnClickPendingIntent(R.id.singleLine, pendingIntent2);
созданы
товаров, добавленного к виджету, он выглядит великолепно, НО слушатели не работают так, как я хочу - только первый слушатель для первой кнопки работ, другие Безразлично «т. Я полагаю, что это потому, что я регистрирую setOnClickPendingIntent для обеих кнопок с одинаковым идентификатором (R.id.singleLine), но самая большая проблема заключается в том, что я не могу установить идентификатор кнопки, когда ее внутреннее дистанционное представление ...
Есть ли способ делаете что-то подобное? Thx много
EDIT: Это мой элемент макета, я пытаюсь создать.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/singleLine"
android:layout_width="fill_parent"
android:layout_height="34dp"
android:clickable="true"
android:orientation="vertical" >
<TextView
android:id="@+id/txtTime"
android:layout_width="45dp"
android:layout_height="wrap_content"
android:paddingRight="5dp"
android:textSize="@dimen/fontNewsCompact" />
<TextView
android:id="@+id/txtCurrency"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:paddingRight="5dp"
android:textSize="@dimen/fontNewsExtraCompact" />
</LinearLayout>
хорошо, для меня это не работает - конечно, потому что установка Im onClickPendingIntent 2x для тот же идентификатор, что и вы можете видеть. Вопрос о том, как избежать этого ... Для получения дополнительной информации я обновил свой первый пост и добавил макет, который я пытаюсь сгенерировать (с id singleLine) – qkx
Я знаю, что вы используете один и тот же идентификатор, но он должен быть другим. Если вы используете этот идентификатор, чтобы сделать некоторую логику в вашем классе ForexWidget, используйте вместо него действие action.startsWith (Constants.Action_PRESSED_ITEM). – htafoya
Я понимаю u абсолютно, но это не главная проблема. Проблема в том, что я делаю это 'updateViews.setOnClickPendingIntent (R.id.singleLine, pendingIntent1)' и этот 'updateViews.setOnClickPendingIntent (R.id.singleLine, pendingIntent2)', поэтому на самом деле я регистрирую 2 onclick намерения для одного item 'R.id.singleLine' - также у меня есть 2 экземпляра. Но как правильно зарегистрировать его? Потому что что-то вроде этого 'updateViews.setOnClickPendingIntent (currentItem1.getLayoutId(), pendingIntent1)' и этот 'updateViews.setOnClickPendingIntent (currentItem2.getLayoutId(), pendingIntent2)', конечно, не работает. – qkx