如何在Android小部件中使用listView?
我正在尝试制作一个带有listView的小部件,我遵循android文档,然后。 我只是尝试在listView中显示任何文本,但什么也没有得到。有人能教我如何实现listView并将数据显示到小部件中吗?谢谢 NewAppWidget.java如何在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
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”>