Android AppWidget ListView 不会填充
Android AppWidget ListView won't populate
我很难弄清楚为什么我的 App Widget ListView 不会填充数据。一切似乎都连接正确。调试时,我可以看到从我的数据库 (Firestore) 检索的数据。但是,它仍然不会填充到 App Widget 中。
我在 Github 上创建了一个新问题,以便更容易查看问题:Github Issue
RemoteViewsFactory
- 从
Firestore DB
中成功获取数据
List<Review> reviews
已填充
- 其中的
Review
个对象包含正确的数据
get()
方法 return 正确的数据
ReviewsAppWidgetProvider
ReviewsWidgetService Intent
已创建
setRemoteAdapter()
使用 Intent
调用并传入 ListView
updateAppWidget()
被称为
notifyAppWIdgetViewDataChaged()
被称为
ReviewFragment
ReviewsAppWidgetProvider.updateAppWidgets()
添加或删除评论时调用
AndroidManifest
ReviewsAppWidgetProvider
声明为接收者
- 为
action.APPWIDGET_UPDATE
设置的 Intent 过滤器
ReviewsWidgetService
声明为服务
- 权限
BIND_REMOTEVIEWS
设置
正如您所说,获取数据一切正常。但它仍然绘制加载视图。所以问题出在你的 divider. View can't be used in app widgets, because launcher process doesn't know about view, it's only know about limited count of views, all views that can be used, you can find here.
那么如何制作这样的分隔线呢?
首先你需要一个形状,所以它会像 bottom_border.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="0.5dp"
android:color="#CCCCCC" />
</shape>
所以现在在你的 root view 添加背景 bottom_border.xml 比如:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/bottom_border"
android:layout_width="match_parent"
android:layout_height="wrap_content">
...
我很难弄清楚为什么我的 App Widget ListView 不会填充数据。一切似乎都连接正确。调试时,我可以看到从我的数据库 (Firestore) 检索的数据。但是,它仍然不会填充到 App Widget 中。
我在 Github 上创建了一个新问题,以便更容易查看问题:Github Issue
RemoteViewsFactory
- 从
Firestore DB
中成功获取数据
List<Review> reviews
已填充- 其中的
Review
个对象包含正确的数据 get()
方法 return 正确的数据
ReviewsAppWidgetProvider
ReviewsWidgetService Intent
已创建setRemoteAdapter()
使用Intent
调用并传入ListView
updateAppWidget()
被称为notifyAppWIdgetViewDataChaged()
被称为
ReviewFragment
ReviewsAppWidgetProvider.updateAppWidgets()
添加或删除评论时调用
AndroidManifest
ReviewsAppWidgetProvider
声明为接收者- 为
action.APPWIDGET_UPDATE
设置的 Intent 过滤器
ReviewsWidgetService
声明为服务- 权限
BIND_REMOTEVIEWS
设置
正如您所说,获取数据一切正常。但它仍然绘制加载视图。所以问题出在你的 divider. View can't be used in app widgets, because launcher process doesn't know about view, it's only know about limited count of views, all views that can be used, you can find here.
那么如何制作这样的分隔线呢? 首先你需要一个形状,所以它会像 bottom_border.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="0.5dp"
android:color="#CCCCCC" />
</shape>
所以现在在你的 root view 添加背景 bottom_border.xml 比如:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/bottom_border"
android:layout_width="match_parent"
android:layout_height="wrap_content">
...