Подтвердить что ты не робот

Начало работы Android при нажатии виджета Элемент ListView

Я работаю над виджетами ListView, где я хочу, чтобы пользователь мог запускать действие при нажатии на ListView. Я не смог найти какой-либо учебник по этому поводу, поэтому мне интересно, может ли кто-нибудь указать мне в правильном направлении или, возможно, поделиться каким-то кодом. Я хочу запустить одно и то же действие, независимо от того, какой щелчок был нажат ListItem, чтобы не проблема.

Вся помощь приветствуется!

4b9b3361

Ответ 1

Посмотрите здесь и перейдите к подзаголовке Добавление поведения к отдельным элементам.

Вам нужно убедиться, что вы вызываете setPendingIntentTemplate() из AppWidgetProvider и setOnClickFillInIntent() из вашей реализации RemoteViewsService.RemoteViewsFactory.

Например:

public class Widget extends AppWidgetProvider {

    // ...

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

        for(int i = 0; i < appWidgetIds.length; i++){

            RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);

            Intent startActivityIntent = new Intent(context, myActivity.class);
            PendingIntent startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
            widget.setPendingIntentTemplate(R.id.list_view, startActivityPendingIntent);

            appWidgetManager.updateAppWidget(appWidgetIds[i], widget);

            // ...
    }
}

public class WidgetAdapter implements RemoteViewsService.RemoteViewsFactory {

    // ...

    @Override
    public RemoteViews getViewAt(int position) {

    RemoteViews widgetRow = new RemoteViews(context.getPackageName(), R.layout.widget_row);

        Intent fillInIntent = new Intent();
        fillInIntent.putExtra(Widget.EXTRA_LIST_VIEW_ROW_NUMBER, position);
        widgetRow.setOnClickFillInIntent(R.id.list_view_row, fillInIntent);

        // ...

        return row;
    }
}

В образце StackWidget есть более убедительный пример, который находится в SDK-образцах, хотя мне было несколько сложно найти (см. здесь для маршрутов). Он создает намерение показывать сообщение Toast, но использует тот же код.

Ответ 2

Чтобы запустить любую операцию, вы создаете намерение, а затем вызываете startActivity с этим намерением. Проверьте намерение и startActivity, и я уверен, что вы сможете сделать это самостоятельно.