显示图像列表时应用程序小部件问题

2023-12-05

我浏览了以下 android 文档:“带有集合的应用程序小部件”来创建一个显示文本列表的小部件。一切工作正常,并且正如我所希望的那样工作。

现在,我想显示存储在 SD 卡中的图像列表,而不是显示文本列表。 那么如何在我已经实现的代码中完成这一点呢?如果有人对此有一些想法,请帮助我解决这个问题。

我写的代码:

WidgetProvider.java

public class WidgetProvider extends AppWidgetProvider 
{
    public static String EXTRA_WORD=
            "com.commonsware.android.appwidget.lorem.WORD";

    @Override
    public void onUpdate(Context ctxt, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) 
    {
        for (int i=0; i<appWidgetIds.length; i++) 
        {
            Intent svcIntent=new Intent(ctxt, WidgetService.class);

            svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
            svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));

            RemoteViews widget=new RemoteViews(ctxt.getPackageName(),
                    R.layout.widget);

            widget.setRemoteAdapter(appWidgetIds[i], R.id.words,
                    svcIntent);

            Intent clickIntent=new Intent(ctxt, LoremActivity.class);
            PendingIntent clickPI=PendingIntent
                    .getActivity(ctxt, 0,
                            clickIntent,
                            PendingIntent.FLAG_UPDATE_CURRENT);

            widget.setPendingIntentTemplate(R.id.words, clickPI);

            appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
        }

        super.onUpdate(ctxt, appWidgetManager, appWidgetIds);
    }
}

WidgetService.java

public class WidgetService extends RemoteViewsService 
{
    @Override
    public RemoteViewsFactory onGetViewFactory(Intent intent)
    {
        return(new WidgetDisplay(this.getApplicationContext(),
                intent));
    }
}

WidgetDisplay.java

public class WidgetDisplay implements RemoteViewsService.RemoteViewsFactory 
{
    private static final String[] items={"Red", "Green", "Blue", "Pink", "Orange"};
    private Context ctxt=null;
    private int appWidgetId;

    public WidgetDisplay(Context ctxt, Intent intent) 
    {
        this.ctxt=ctxt;
        appWidgetId=intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
    }

    @Override
    public void onCreate() 
    {
        // no-op
    }

    @Override
    public void onDestroy() 
    {
        // no-op
    }

    @Override
    public int getCount() 
    {
        return(items.length);
    }

    @Override
    public RemoteViews getViewAt(int position) 
    {
        RemoteViews row=new RemoteViews(ctxt.getPackageName(),
                R.layout.row);

        row.setTextViewText(android.R.id.text1, items[position]);

        Intent i=new Intent();
        Bundle extras=new Bundle();

        extras.putString(WidgetProvider.EXTRA_WORD, items[position]);
        i.putExtras(extras);
        row.setOnClickFillInIntent(android.R.id.text1, i);

        return(row);
    }

    @Override
    public RemoteViews getLoadingView() 
    {
        return(null);
    }

    @Override
    public int getViewTypeCount() 
    {
        return(1);
    }

    @Override
    public long getItemId(int position) 
    {
        return(position);
    }

    @Override
    public boolean hasStableIds() 
    {
        return(true);
    }

    @Override
    public void onDataSetChanged() 
    {
        // no-op
    }
}

XML File

小部件.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/words"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_marginTop="3dp"
  android:layout_marginLeft="3dp"
  android:background="@drawable/widget_frame"
/>

Row.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"   
/>

Widget_provider.xml

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  android:minWidth="146dip"
  android:minHeight="146dip"
  android:updatePeriodMillis="0"
  android:initialLayout="@layout/widget"
  android:autoAdvanceViewId="@+id/words"
  android:previewImage="@drawable/preview"
  android:resizeMode="vertical"
/>

我得到的小部件的屏幕截图

enter image description here


我就是这样使用的并且效果很好。

将textview更改为imageviewrow.xml

public WidgetDisplay(Context ctxt, Intent intent) 
    {
        this.ctxt=ctxt;
        appWidgetId=intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
                setImageinView(this.ctxt);
    }

private void setImageinView(Context context) {
//read sd card and store bitmap in  arrayListBitmap;
}

@Override
public RemoteViews getViewAt(int position) {
remoteView = new RemoteViews(ctxt.getPackageName(), R.layout.row);
    remoteView.setImageViewBitmap(R.id.image_photo1,arrayListBitmap.get(i));
}

很简单,您必须读取 SD 卡将数据存储到数组列表中。

将尺寸设置为获取计数().

现在在您的图像视图中设置图像。

如果有任何疑问欢迎。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示图像列表时应用程序小部件问题 的相关文章

随机推荐

  • 如何在主项目中包含多个 Xcode 项目

    我最近问过使用多个 Xcode 项目的智慧分离项目组件 我决定在我的下一个项目中遵循这条路线 我尝试通过将另一个项目拖放到侧边栏来将其添加到主 Xcode 项目中 但是 当我 import 添加的项目中定义的任何类时 我被告知找不到这些类
  • JAVA 6x6 网格填色游戏

    大家好 我现在进入最后一部分 即文件读取 我尝试编写一个 fileReader 但似乎没有更改变量 rNum 的值 关于为什么以下陈述不会改变的任何想法 谢谢 public void readStartFile String fileNam
  • Android 4.0+ 与嵌入式设备的蓝牙连接错误:“权限被拒绝”

    我有以下设置 Android 设备使用 客户端 套接字连接到远程嵌入式设备 Android 应用程序使用以下代码片段连接到嵌入式设备 在嵌入式设备上使用MindTree BT堆栈 其中服务器串行套接字是根据设备中的一些属性准备的 这是And
  • 在 SAS 中将宽转为长,无需额外的列

    我想转置数据集 但 SAS 坚持添加新列 如果 by 列 有多个条目 所以如果我跑 data test input a b c datalines 1 aaa bbb 1 bbb bbb 2 ccc ccc 3 ccc ccc run pr
  • `fullVisitorId` => clientId,一对多映射?

    我的印象是fullVisitorId只是 clientId 的哈希值 两者之间应该存在一对一的映射 但在这里 我遇到的情况是很少有人fullVisitorId被映射到两个不同的client Id 我们正在将 GA 客户端 ID 收集到用户范
  • 超链接的路径仅为正斜杠 (/)

    我被要求对朋友的公司网站进行一些更改 它使用 PHP 插入文件作为每个页面的标题 这很有用 因为每个页面上的导航等都是相同的 以下代码指定每个页面上的公司徽标 div a href a div 如您所见 href of the a标签包含o
  • 如何在项目的 Scala 构建定义中定义包后面的目录结构?

    sbt 项目中有两个完整的构建定义文件 Build scala and Helpers scala 他们位于project folder 我想放Helpers模块到单独的子文件夹中project utils 当我做import utils
  • Pandas DataFrames 与 NaN 相等比较

    在对某些函数进行单元测试的背景下 我尝试使用 python pandas 建立 2 个 DataFrame 的相等性 ipdb gt expect 1 2 2012 01 01 00 00 00 00 00 NaN 3 2013 05 14
  • 是否可以使用 Inno Setup 接受自定义命令行参数

    我正在使用 Inno Setup 准备安装程序 但我想添加一个额外的自定义 没有可用参数 命令行参数 并希望获取参数的值 例如 setup exe do something 检查是否 do被给定 然后得到某物的价值 是否可以 我怎样才能做到
  • 有没有办法知道在什么情况下调用 Child Added ?特别是页面加载与其他事件

    这是我的场景 当通过浏览器事件页面加载后添加子项时 我想在标题中指出它 但在页面加载时 也会调用添加的子项 如何区分添加的初始子项与实际添加的新条目的子项 谢谢 蒂姆 Firebase 故意不区分 初始 数据和 新 数据 在大多数情况下 这
  • Newtonsoft.JSON序列化对象返回空JSON字符串[重复]

    这个问题在这里已经有答案了 每个人都经常被问到这个问题 我几乎尝试了所有方法 但没有一个对我有用 所以我正在 Xamarin Forms 中进行开发 并将我的数据发送到服务器 我有这门课 public class Customer publ
  • C++ 随机数每次都相同的序列

    我写这个是为了生成一个随机密码 include
  • NSStatusBar + Swift:标题显示并立即消失

    我想为 macOS 制作状态栏 但运行应用程序后标题显示并立即消失 func applicationDidFinishLaunching aNotification Notification Insert code here to init
  • 以编程方式与 IE 浏览器交互以填写表单和导航等

    我想使用 C 与 IE 浏览器交互 我感觉会涉及到shdocvw dll 但是里面的类太多了 我不知道从哪里开始 也许根本没有必要使用它 这里的目标是与网站交互 访问其页面并 预热 与如此处所述 by 肯尼斯 斯科特 问题是 当您与网站交互
  • 在 ADF 管道中将文件 blob 存储的访问层从热层更改为存档层

    我想使用 ADF 管道将文件从一个容器复制到另一个容器 在复制时我必须将访问层从热层更改为存档层 我必须使用 ADF 管道来实现这一点 帮助我找到一种不使用自定义活动的方法会很棒 我没有在任何活动中看到实现此目的的直接属性 您可以尝试下面的
  • 为什么我的烧瓶表单验证返回不是有效的选择?

    我一直试图找出为什么我的 Flask 表单无法正确验证我的选择字段选择 即使这些选择来自选择字段选项 我的假设是 从服务器传回时的选择选项是 unicode 并且正在与作为字符串的选择进行比较 但是 我认为 coerce str 可以解决这
  • 为什么自动变量如果不设置就会包含垃圾?

    在 C 编程语言 第三版和第 32 页中 我看到了一些让我感到困惑的行 因为自动变量随着函数调用而出现和消失 所以它们 从一次调用到下一次调用 不保留它们的值 并且必须 在每个条目上明确设置 如果未设置 它们将包含 垃圾 是不是说对于下面的
  • sys.argv 在 python PyQt4 中的用途是什么

    在编程方面我还是个初学者 尤其在 GUI 编程方面我还是个新手 我正在使用 python 和 PyQt4 并且正在遵循教程指南 下面的代码块相对容易理解 import sys from PyQt4 import QtGui def wind
  • 使用 Swashbuckle.AspNetCore 设置 Swagger UI 的 syntaxHighlight 属性

    我正在一个项目中使用 Swashbuckle AspNetCore 我开始使用的版本是5 5 1当渲染大型主体 20k json 行 的结果时 速度非常合理 数据获取需要 50 毫秒 渲染需要不到一秒 当我升级到5 6 x 语法现在突出显示
  • 显示图像列表时应用程序小部件问题

    我浏览了以下 android 文档 带有集合的应用程序小部件 来创建一个显示文本列表的小部件 一切工作正常 并且正如我所希望的那样工作 现在 我想显示存储在 SD 卡中的图像列表 而不是显示文本列表 那么如何在我已经实现的代码中完成这一点呢