Android clickable Widget with ListView not clickable on ListItems

一个人想着一个人 提交于 2019-12-08 19:21:30

问题


I am having trouble making my Widget clickable. The following code is working partially. My Widget shows a ListView with Items. When clicking into the Widget where no Item is displayed, the Intent works and the Activity starts. But when clicking on an Item of the ListView nothing happens.

Here is the Code: WidgetProvicer:

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


    for (final int iD : appWidgetIds) {

        final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout
                .widget_layout);

        final Intent intent = new Intent(context, TickWidgetService.class);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, iD);
        intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
        remoteViews.setRemoteAdapter(R.id.WidgetItem, intent);

        remoteViews.setEmptyView(R.id.WidgetItem, R.id.empty_view);

        final Intent activityIntent = new Intent(context, MainActivity.class);
        final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, activityIntent, 0);

        remoteViews.setOnClickPendingIntent(R.id.Widget, pendingIntent);


        appWidgetManager.updateAppWidget(iD, remoteViews);
        appWidgetManager.notifyAppWidgetViewDataChanged(iD, R.id.WidgetItem);
    }

    super.onUpdate(context, appWidgetManager, appWidgetIds);
}

widget_layout.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/Widget"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
 <ListView
    android:id="@+id/WidgetItem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="#D3D3D3"
    android:dividerHeight="1dp"/>


 <TextView
    android:id="@+id/empty_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/darker_gray"
    android:gravity="center"
    android:text="@string/emptytext"
    android:visibility="gone"/>
 </LinearLayout>

The ListViewItems have no Buttons or anything.

Thanks for your help!


回答1:


finally it is working:

in the Profider onUpdate:

final Intent activityIntent = new Intent(context, MainActivity.class);
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setPendingIntentTemplate(R.id.WidgetItem, pendingIntent);

and in the ViewsFactory getViewAt:

Bundle infos = new Bundle();
infos.putInt(TickWidgetProvider.WIDGET_LISTID, this.listId);
final Intent activityIntent = new Intent();
activityIntent.putExtras(infos);

remoteView.setOnClickFillInIntent(R.id.widgetListItemLayout, activityIntent);

Do not know where I found it, but this example helped me making it work: https://github.com/commonsguy/cw-advandroid/tree/master/AppWidget/LoremWidget



来源:https://stackoverflow.com/questions/32295769/android-clickable-widget-with-listview-not-clickable-on-listitems

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!