微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Android窗口小部件中使用listView?

如何解决如何在Android窗口小部件中使用listView?

我正在尝试使用listView创建小部件,我遵循android文档和this code。 我只是尝试在listView中显示任何文本,但我什么也没得到。谁能教我如何实现listView并将数据显示到小部件中?谢谢

NewAppWidget.java

public class NewAppWidget extends appwidgetprovider {

static void updateAppWidget(Context context,AppWidgetManager appWidgetManager,int appWidgetId) {


    RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.new_app_widget);
    views.setTextViewText(R.id.appwidget_id,String.valueOf(appWidgetId));

    // Instruct the widget manager to update the widget
    appWidgetManager.updateAppWidget(appWidgetId,views);
}

@Override
public void onUpdate(Context context,int[] appWidgetIds) {
    // There may be multiple widgets active,so update all of them
    for (int appWidgetId : appWidgetIds) {

        RemoteViews views = new RemoteViews(
                context.getPackageName(),R.layout.new_app_widget
        );
        Intent intent = new Intent(context,MyWidgetRemoteViewsService.class);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);

        intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
        views.setRemoteAdapter(R.id.widget_list,intent);
        appWidgetManager.updateAppWidget(appWidgetId,views);
        updateAppWidget(context,appWidgetManager,appWidgetId);


    }
}

@Override
public void onEnabled(Context context) {
    // Enter relevant functionality for when the first widget is created
}

@Override
public void ondisabled(Context context) {
    // Enter relevant functionality for when the last widget is disabled
    }
}

MyWidgetRemoteViewsFactory.java

    public class MyWidgetRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory {

    private Context context;

    private int appWidgetId;
    private List<String> widgetList = new ArrayList<String>();
    private ArrayList<String> eventList= new ArrayList<>();


    public MyWidgetRemoteViewsFactory(Context applicationContext,Intent intent) {
        context = applicationContext;
        appWidgetId=intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID);
        Log.d("AppWidgetID",String.valueOf(appWidgetId));
    }

    private void updateWidgetListView() {



        widgetList.add("!");

        widgetList.add("!!");
        widgetList.add("!!!");
    }


//        String[] widgetFruitsArray = dbhelper.retrieveFruitsList();
//        List<String> convertedToList = new ArrayList<String>(Arrays.asList(widgetFruitsArray));




    @Override
    public void onCreate() {
        updateWidgetListView();
    }

    @Override
    public void onDataSetChanged() {
        updateWidgetListView();

    }

    @Override
    public void onDestroy() {
        widgetList.clear();
    }

    @Override
    public int getCount() {
        return widgetList.size();
    }

    @Override
    public RemoteViews getViewAt(int position) {
        Log.d("WidgetCreatingView","WidgetCreatingView");
        RemoteViews remoteView = new RemoteViews(context.getPackageName(),R.layout.widget_list_row);

        Log.d("Loading",widgetList.get(position));
        remoteView.setTextViewText(R.id.eventID,widgetList.get(position));

        return remoteView;
    }

    @Override
    public RemoteViews getLoadingView() {
        return null;
    }

    @Override
    public int getViewTypeCount() {
        return 1;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public boolean hasstableIds() {
        return true;
    }
}

MyWidgetRemoteViewsService.java

public class MyWidgetRemoteViewsService extends RemoteViewsService {


@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
    return new MyWidgetRemoteViewsFactory(this.getApplicationContext(),intent);
}

}

AndroidManifest.xml

<service
        android:name=".MyWidgetRemoteViewsService"
        android:enabled="true"
        android:exported="true">
        android:permission="android.permission.BIND_REMOTEVIEWS">

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。