Items on ListView in Widget doesn#39;t display [Android](Widget 中 ListView 上的项目不显示 [Android])
问题描述
我在我的小部件中创建了一个 ListView
并从 Web 服务中获取结果.我从 Web 服务获取结果没有任何问题,但结果没有显示在我的 ListView
甚至更新 widget
的 updatePeriodMillis
上代码> 每 30 分钟一次不起作用.
I create a ListView
in my widget and getting the result from a web service. I don't have any problem in getting the result from the web service but the result is not displaying on my ListView
and even updatePeriodMillis
that updates the widget
every 30 minutes is not working.
我正在关注 这个例子并添加了 AsyncTask
在 ListProvider
类中,我设法得到了结果,而不是像这样使用 populateListItem()
I'm following this example and added AsyncTask
in the ListProvider
class, I managed to get the result and instead of using the populateListItem()
where it is like this
private void populateListItem() {
for (int i = 0; i < 10; i++) {
ListItem listItem = new ListItem();
listItem.heading = "Heading" + i;
listItem.content = i
+ " This is the content of the app widget listview.";
listItemList.add(listItem);
}
}
我在 onPostExecute
public class ListProvider implements RemoteViewsFactory {
private ArrayList<ListItem> listItemList = new ArrayList<ListItem>();
public ListProvider(Context context, Intent intent) {
new GetJSONWebService().execute();
}
class GetJSONWebService extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
String str = null;
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(URL_STRING);
HttpResponse response = httpclient.execute(httpget);
str = EntityUtils.toString(response.getEntity());
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject object = new JSONObject(result);
JSONArray jArray = object.getJSONArray("DATA");
for (int i = 0, count = jArray.length(); i < count; i++) {
try {
JSONObject jsonObject = jArray.getJSONObject(i);
ListItem listItem = new ListItem();
listItem.heading = jsonObject.getString("name").toString();
listItem.content = jsonObject.getString("description").toString();
listItemList.add(listItem);
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
调试时,它会在我的 listItemList
上添加项目,但它不会显示在我的小部件 ListView
上.我该如何解决这个问题?先感谢您.
When debugging, it adds the items on my listItemList
but it doesn't display on my widget ListView
. How can I solve this? Thank you in advance.
这是我的 WidgetService
public class WidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new ListProvider(this.getApplicationContext(), intent));
}
}
这是我的 AppWidgetProvider
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; ++i) {
RemoteViews remoteViews = updateWidgetListView(context,
appWidgetIds[i]);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
private RemoteViews updateWidgetListView(Context context, int appWidgetId) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
Intent svcIntent = new Intent(context, WidgetService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
remoteViews.setRemoteAdapter(appWidgetId, R.id.listViewWidget,
svcIntent);
remoteViews.setEmptyView(R.id.listViewWidget, R.id.empty_view);
return remoteViews;
}
推荐答案
我按照 答案在这里 我发现我的 getCount
总是返回 0,因此我没有使用 AsyncTask
我把我的网络服务调用放在 onDataSetChanged()代码>.
I solve this by following the answer here I found out that my getCount
always returns 0 and therefore instead of using AsyncTask
I put my web service call in onDataSetChanged()
.
这篇关于Widget 中 ListView 上的项目不显示 [Android]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Widget 中 ListView 上的项目不显示 [Android]
基础教程推荐
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01