【问题标题】:How do I access a ViewFlipper in a Widget to populate its content dynamically?如何访问 Widget 中的 ViewFlipper 以动态填充其内容?
【发布时间】:2014-03-22 19:13:15
【问题描述】:

我有一个需要用动态内容填充的小部件。

具体来说,我希望它包含一个 ViewFlipper,其视图在运行时更新。

我不清楚如何从我的AppWidgetProvider 的 onUpdate 方法访问 ViewFlipper(假设这是影响 Widget 更改的正确位置,并且我在网上找到的所有示例都处理静态所有元素都在 xml 中定义的布局)。

所以...

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

    //in pseudo code I'm looking for something that lets me do this...
    **(ViewFlipper) vf = remoteViews.findViewById(R.id.myFlipper);**

//EDIT:
//based on commonsware's suggestion... I'm here...
ImageView stationView = (ImageView)((Activity)context).getLayoutInflater().inflate(R.layout.widget_station, null);

//how what?

    pushWidgetUpdate(context, remoteViews);

}

但是,RemoteViews 没有这样的方法,所以我很困惑如何处理这个问题。根据文档,我看到小部件支持 ViewFlippers ......但它们不支持动态填充它们吗?

【问题讨论】:

    标签: android widget viewflipper


    【解决方案1】:

    具体来说,我希望它包含一个 ViewFlipper,其视图在运行时更新

    这个请求有两种可能的解释。

    一个是您希望ViewFlipper 保存固定数量的“页面”,并且每个“页面”始终具有相同的小部件,但您希望填充这些小部件的内容。在这种情况下,您可以像在应用小部件中执行任何其他操作一样填充它们:通过引用这些特定小部件,忽略 ViewFlipper

    或者,您想要一个ViewFlipper,它在不同时间有不同数量的页面,或者页面有不同的布局。在这种情况下,您可以为每个页面尝试addView(),将ViewFlipper id 指定为第一个参数。或者,尝试AdapterViewFlipper,看看setRemoteAdapter() 是否会导致应用小部件从RemoteViewsService 重新加载其内容。

    【讨论】:

    • 我喜欢真正动态解决方案的声音,但不清楚 addView() 解决方案。我一直使用 addView 作为myFlipper.addView(newFlipperPage)。我的问题是*确切地说是提供者中的“我如何获得对myFlipper 的引用”。
    • 所以...我已经编辑了我的问题,以根据我对您的回答的理解尽可能地获得。您能否详细说明如何将这个膨胀的视图附加到 ViewFlipper 上?
    • @GeniaS.: addView() on RemoteViewsRemoteViews 作为第二个参数。使用 RemoteViews 构造函数创建一个 RemoteViews 实例,就像为 ViewFlipper 本身所做的那样。
    • 我们中的一个人误解了另一个人(我会假设是我造成了误解)。我没有“ViewFlipper 本身”的实例。这就是我的问题的症结所在... *如何获得对 ViewFlipper 的引用以便能够向其添加视图?还是您的意思是我应该将 ViewFlipper 创建为另一个动态视图,然后将其添加到 RemoteViews?目前,我的 ViewFlipper 在布局 xml 中......这是*这个布局 xml ViewFlipper,我试图将视图附加到......但我感觉你建议我应该只生成一个新的?
    • 好的...这个答案stackoverflow.com/questions/4078039/… 与您的建议完美结合。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 2013-09-09
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多