我有一个从html中检索的项目列表。
他们都是头衔。
我正在做的是测试特定事物的每个标题。
如果有,我想将它添加到小部件中的TextView。
唯一的问题是,如果它们超过1项,则小部件将不会保留所有项目。
早于3.0的小部件不支持和listview布局。
那么如何在TextView上添加每个项目,然后使用下一个按钮显示每个项目以显示下一个文本视图?
编辑:
好的,这样的SOunds是有道理的。 在这里我如何检索我的标题......
如果将它们设置为ArrayList并在单击textview时显示列表中的下一个项目,您会建议什么?
while(doc == null && retry < 5){
retry++;
try {
doc = Jsoup.connect(site).get();
} catch (IOException e) {
Log.e("Html", "JSoup get retrieved no document", e);
}
}
if(doc != null){
title = doc.select("tr> td.indexList1, tr > td.indexList2");
if(title != null){
// Iterator over those elements
ListIterator<Element> postIt = title.listIterator();
//Loads all the items until there is no .hasNExt()
while (postIt.hasNext()) {
// Add the game text to the ArrayList
Element name = postIt.next();
nameString = name.text();
list.add(new Release(nameString));
那么我最初如何使用它来设置textview,然后(使用你建议的代码)允许列表中的下一个项目加载到文本视图中?
答案 0 :(得分:1)
将标题保留在列表中(例如java列表,例如ArrayList),并且在布局中只定义了1个textview。
在您的清单中,为您的widgetprovider(收件人)添加一个新的intent过滤器,例如:
<intent-filter>
<action android:name="WIDGET_NEXT_TITLE" />
</intent-filter>
在您的小部件提供程序类中,在textview中添加onClickPendingIntent:
final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
final Intent nextTitleIntent = new Intent("WIDGET_NEXT_TITLE");
nextTitleIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, nextTitleIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.textview_id, pendingIntent);
例如,您可以在onUpdate方法中执行此操作。 现在,每次点击和意图都会被触发,你需要的只是抓住它并在textview中设置下一个标题。在你的widgetprovider覆盖方法onRecieve中,如下所示:
if ("WIDGET_NEXT_TITLE".equals(intent.getAction())) {
final int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
if (widgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
// get the next title here and set the text in a textview through RemoteView
}
} else {
super.onReceive(context, intent);
}
这样的事情。当然它非常简单,因为你需要跟踪当前显示的标题,但我希望你能得到这个想法。