Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android小部件中使用listView?_Android_Listview_Android Widget_Listviewitem - Fatal编程技术网

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

如何在Android小部件中使用listView?,android,listview,android-widget,listviewitem,Android,Listview,Android Widget,Listviewitem,我正在尝试制作一个带有listView的小部件,我遵循android文档,然后。 我只是尝试在listView中显示任何文本,但什么也没有得到。有人能教我如何实现listView并将数据显示到小部件中吗?谢谢 NewAppWidget.java public class NewAppWidget extends AppWidgetProvider { static void updateAppWidget(Context context, AppWidgetManager appWidgetM

我正在尝试制作一个带有listView的小部件,我遵循android文档,然后。 我只是尝试在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, AppWidgetManager appWidgetManager, 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
    }
}
    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;
    }
}
public class MyWidgetRemoteViewsService extends RemoteViewsService {


@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
    return new MyWidgetRemoteViewsFactory(this.getApplicationContext(), intent);
}
MyWidgetRemoteViewsFactory.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, AppWidgetManager appWidgetManager, 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
    }
}
    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;
    }
}
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">

android:permission=“android.permission.BIND\u remoteview”>