如何在窗口小部件中显示文本视图并显示下一个按钮?

时间:2011-09-15 12:52:00

标签: android android-widget

我有一个从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,然后(使用你建议的代码)允许列表中的下一个项目加载到文本视图中?

1 个答案:

答案 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);
    }

这样的事情。当然它非常简单,因为你需要跟踪当前显示的标题,但我希望你能得到这个想法。