使用毕加索库时目标不能为空

2024-04-24

我实现了一个listView使用 Picasso Library 2.4.0,我遇到了一个问题。发生了什么:我使用 Android Studio 启动应用程序,然后转到我实现的特定片段listView,一切看起来都很好(所有图像都正在加载,对于TextView)但是如果我尝试向下滚动应用程序就会崩溃。这就是它告诉我的:

2-03 19:45:38.290  31501-31501/com.zenyt E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalArgumentException: Target must not be null.
            at com.squareup.picasso.RequestCreator.into(RequestCreator.java:553)
            at com.squareup.picasso.RequestCreator.into(RequestCreator.java:536)
            at com.zenyt.Volvo.Volvo1$SampleListViewAdapter.getView(Volvo1.java:106)
            at android.widget.AbsListView.obtainView(AbsListView.java:2445)
            at android.widget.ListView.makeAndAddView(ListView.java:1775)
            at android.widget.ListView.fillDown(ListView.java:678)
            at android.widget.ListView.fillGap(ListView.java:642)
            at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5525)
            at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3413)
            at android.widget.AbsListView.onTouchEvent(AbsListView.java:3901)
            at android.view.View.dispatchTouchEvent(View.java:7337)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2410)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2145)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2115)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1468)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2487)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2063)
            at android.view.View.dispatchPointerEvent(View.java:7520)
            at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3376)
            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3308)
            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4402)
            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4380)
            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4484)
            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
            at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
            at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:163)
            at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4452)
            at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4503)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
            at android.view.Choreographer.doCallbacks(Choreographer.java:555)
            at android.view.Choreographer.doFrame(Choreographer.java:523)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711

它向我指出了这一行:at com.zenyt.Volvo.Volvo1$SampleListViewAdapter.getView(Volvo1.java:106)这是:Picasso.with(context)

 public final class SampleListViewAdapter extends BaseAdapter {
        private final Context context;
        private final List<String> urls = new ArrayList<>();
        private final List<String> models = new ArrayList<>();
        private final List<String> price = new ArrayList<>();
        public SampleListViewAdapter (Context context) {
            this.context = context;
            Collections.addAll(urls, Data.Volvo1URLS);
            Collections.addAll(models, Data.VolvoModels);
            Collections.addAll(price, Data.VolvoPrice);
        }

        @Override public View getView(int position, View view, ViewGroup parent) {
            ViewHolder holder;
            ViewHolder holder1;
            if (view == null) {
                view = LayoutInflater.from(context).inflate(R.layout.sample_list_detail_item, parent, false);

                holder = new ViewHolder();
                holder1 = new ViewHolder();

                holder.image = (ImageView) view.findViewById(R.id.photo);
                holder.text = (TextView) view.findViewById(R.id.url);
                holder1.text = (TextView) view.findViewById(R.id.price);

                view.setTag(holder);
                view.setTag(holder1);
            } else {
                holder = (ViewHolder) view.getTag();
                holder1 = (ViewHolder) view.getTag();
            }
            // Get the image URL for the current position.
            String url = getItem(position);
            String models = getItem1(position);
            String price = getItem2(position);

            holder.text.setText(models);
            holder.text.setTextSize(16);

            holder1.text.setText(price);
            holder1.text.setTextSize(16);

            // Trigger the download of the URL asynchronously into the image view.
            Picasso.with(context)
                    .load(url)
                    .placeholder(R.drawable.placeholder)
                    .error(R.drawable.error)
                    .resizeDimen(R.dimen.list_detail_image_size, R.dimen.list_detail_image_size)
                    .centerInside()
                    .tag(context)
                    .into(holder.image);

            return view;
        }

        @Override public int getCount() {
            return urls.size();
        }

        @Override public String getItem(int position) {
            return urls.get(position);
        }
        private String getItem1(int position) {
            return models.get(position);
        }
        private String getItem2(int position) {
            return price.get(position);
        }

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

         class ViewHolder {
            ImageView image;
            TextView text;
        }
    }

该应用程序工作正常,直到我添加了第二个holder -> holder1。如果我删除属于此的所有行holder1该应用程序可以正常使用。

Sample_list_detail_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="8dp"
    android:background="@android:color/black">

    <ImageView
        android:id="@+id/photo"
        android:layout_width="@dimen/list_detail_image_size"
        android:layout_height="@dimen/list_detail_image_size"
        />
    <TextView
        android:id="@+id/url"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginLeft="5dp"
        android:layout_marginStart="5dp"
        android:layout_gravity="start|center_vertical"
        />

    <TextView
        android:id="@+id/price"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="start|center"
        />
</LinearLayout>

对不起我的英语不好。


发生错误的原因是holder.image为空 - 并且into()特别检查您传入的参数不为空。

当你使用setTag()/getTag(),只能存储单个对象。因此当你打电话时

view.setTag(holder);
view.setTag(holder1);

中没有任何数据holder已保存 - 替换为holder1。而不是拥有多个ViewHolder,您应该在现有的基础上添加另一个字段ViewHolder class:

class ViewHolder {
  ImageView image;
  TextView url;
  TextView price;
}

然后你可以只使用一个ViewHolder:

holder = new ViewHolder();

holder.image = (ImageView) view.findViewById(R.id.photo);
holder.url = (TextView) view.findViewById(R.id.url);
holder.price = (TextView) view.findViewById(R.id.price);

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

使用毕加索库时目标不能为空 的相关文章

  • Selenium 2:中断页面加载

    我在使用 FirefoxDriver 使用 Selenium 2 0b3 Java API 单击按钮时遇到问题 单击该按钮会将表单发送到网络服务器 然后浏览器会因表单提交而进入新页面 当使用 element click 单击某个元素时 se
  • 从壁纸中获取颜色? - 安卓

    如何找到当前壁纸的 平均 颜色并将该颜色设置为我的小部件上的布局 我正在尝试做的一个例子 这是 AccuWeather 上的设置 您可以使用WallpaperManager getWallpaperColors https develope
  • Android 是否可以获取用户和设备所在国家/地区的货币代码?

    是否可以获取用户和设备所在国家 地区的货币代码 我想将用户当前国家 地区的国家 地区代码设置为默认国家 地区 我们在 Android 中有解决方案吗 由于这段代码可能对您有帮助 public class CurrencyTest publi
  • 如何配置jackson属性命名策略?

    此代码不起作用 Configuration public class RepositoryRestMvcConfig extends RepositoryRestMvcConfiguration Bean Override public O
  • 在 JSON 转换为 CSV 期间保持 JSON 键的顺序

    我正在使用此处提供的 JSON 库http www json org java index html http www json org java index html为了将 json 字符串转换为 CSV 但我遇到的问题是 转换后键的顺序
  • Android 应用安装验证

    我有一个应用程序 其中列出了用户可以安装并赚取积分的一些活动 应用程序列表 现在我主要关心的是安全性 一些用户从模拟器或VPN或其他东西安装应用程序 这样我的客户就无法在Google Play商店中安装应用程序 我见过一些应用程序 如现金海
  • 如何设置 Eclipse 以停止发生异常的线路?

    如何设置 Eclipse 在发生异常时停止 我有一个 Eclipse 断点设置来在异常时中断 在下面的代码示例中 我遇到的问题是 Eclipse 尝试打开 Integer 源代码 有没有办法让调试器在我的代码示例中显示的位置中断 如果我向下
  • 在 Android 谷歌地图中绘制 4K 折线

    我现在正在开发一个适用于 Android 设备的应用程序 主要功能是在地图上绘制折线以显示城市中每条街道的交通情况 不幸的是 当我绘制大约 3K 折线时 数量会根据屏幕尺寸和缩放级别而减少 我的地图变得非常慢 我没有提及绘制所有线条的时间
  • 如何在 Selenium 中定位具有特定文本的跨度? (使用Java)

    我在使用 java 查找 Selenium 中的 span 元素时遇到问题 HTML 看起来像 div class settings padding span Settings span div 我尝试了以下方法但没有成功 By xpath
  • 尝试将过滤器添加到 Grizzly+Jersey 应用程序时出现问题

    我有这个服务器初始化类 package magic app main import org glassfish grizzly http server HttpServer import org glassfish jersey grizz
  • Spring JPA (Hibernate) Entity Manager 何时将连接返回到连接池?

    在我的 java 进程中 我使用以下 spring 配置连接到 MySql Configuration EnableTransactionManagement PropertySources PropertySource classpath
  • TextView ClickableSpan 按下状态的样式[重复]

    这个问题在这里已经有答案了 我对 ClickableSpan 进行子类化 以自定义 TextView 中链接的文本样式 private static class LinkSpan extends ClickableSpan Override
  • 如何在 Android 中隐藏列表视图中的项目

    我知道 这个问题以前曾被问过 但我还没有看到有效的答案 有什么办法可以隐藏一些项目ListView不改变源数据 我尝试将项目视图的可见性设置为消失 它不会再显示 但为此项目保留的位置仍然存在 我还设置了 android dividerHei
  • Spring Boot MultipartFile上传getOriginalFileName根据浏览器不同而不同

    我使用的是 spring boot 1 5 7 RELEASE 版本 我使用以下方法上传文件 Autowired private MyService mySerice RequestMapping value uploadFile meth
  • 在主表单之前显示登录表单

    我在表单之间导航时遇到问题 我使用 Delphi XE5 创建了一个 Android Firemonkey 移动应用程序 我目前有一个登录表单和主表单 现在我想要有关如何处理登录表单以显示在主表单之前的建议 在 项目选项 中的表单下 选择要
  • Android 多用户支持(4.2 中的新功能)对服务器端数据模型(例如 android_id)的影响

    Google 刚刚发布了 Android 4 2 其中支持单个设备上的多个用户配置文件 http developer android com about versions android 4 2 html MultipleUsers htt
  • Spring Data 中 IQueryable 的等效项

    我习惯了 Net 和 LINQtoEntities 尤其是 IQueryable 部分 它允许在获取结果之前通过不同的函数传送请求 Spring数据中是否存在类似的东西 或者任何其他 java ORM 我希望能够做的基本示例 private
  • struts2中如何访问url参数

    我正在做一个struts2项目 我在项目中创建了 url 并使用标签传递了参数 我的问题是如何读取操作中的参数 另外 如果执行相同的操作 我将能够将参数视为查询字符串 我问是因为我无法做到 而且我在其中一个教程中看到了它 通常 您将通过使用
  • 如何在显示项目之前为 RecyclerView 高度设置动画

    我怎样才能 或者我应该说什么时候可以在显示项目之前对 recyclerView 高度进行动画处理 我可以在 onMeasure 中获得最终高度 但项目总是出现太快并且动画不起作用 关于如何让这个动画发挥作用有什么想法吗 None
  • 从 Web 服务器异步调用应用程序

    我有一个用 Spring 制作的 在 Tomcat 上运行的 Web 应用程序 在同一台机器上有一个普通的 Java 应用程序 我想通过从Web服务器调用Java应用程序来执行它 但我想让应用程序不会使用服务器的资源 它涉及分类器的训练 因

随机推荐

  • 使用 JOIN(大表性能)Postgresql 进行 UPDATE FROM?

    我试图让以下查询以合理的性能执行 UPDATE order item imprint SET item new id oi item new id FROM order item oi INNER JOIN order item impri
  • 通过 Rails 访问 has_many 上的附加值

    我在访问 has many 上名为 permission 的附加参数的值时遇到了真正的麻烦 这可能是很简单的事情 我的 3 个型号是 class User lt ActiveRecord Base has many players user
  • CultureAndRegionInfoBuilder 不存在

    好吧 这是一个奇怪的事情 我正在尝试使用以下方法创建自定义文化 using System Globalization var x new CultureAndRegionInfoBuilder 但我收到了令人讨厌的红色 Resharper
  • 在 Firebase 项目中集成 Gmail 连接

    我开发了一个应用程序 它使用 gmail api 来获取来自用户的所有邮件 然后我将此应用程序分为一个示例 几乎是空的 和一个执行所有操作的片段 这样我以后就可以轻松地将我的片段集成到我团队的项目设置中 现在我的片段位于另一个项目中 gma
  • 从 Lambda 向 AWS IoT Core 发布 MQTT 消息

    我是 AWS 世界的新手 目前正在开发一项 Alexa 技能 该技能只需向 AWS IoT Core 代理发布一条 mqtt 消息 与之前创建的 事物 和主题进行交互 目前我正在使用 boto3 但我不确定这是正确的路径 这是代码 但在部署
  • 移动 Safari - 视口设备高度未按预期工作

    我有一个网络应用程序 我试图在 iPad 3 上运行 当我拉起它时 该应用程序允许垂直滚动 但实际上不应该 我已经对其他网络应用程序执行了相同的过程 没有任何问题 并且不确定这次我错过了什么 在我的 html 的 head 元素内 我有以下
  • 如何使用 EditTextPreference 作为屏蔽密码文本字段?

    我有一个非常简单的问题 我有一个EditTextPreference我想用它来获取用户的密码 并且我希望它被屏蔽 我怎样才能做到这一点 下面是一个使用 xml 的简短示例
  • 对象切片,有优势吗?

    对象切片是指当子类被分配给基类时 对象失去一些属性或功能 就像是 Class A Class B extends A Class SomeClass A a new A B b new B Some where if might happe
  • 使用“in”关键字迭代 Javascript 数组

    貌似没明白这句话的意思inJavaScript 中的关键字 看看这个代码片段 http jsfiddle net 3LPZq http jsfiddle net 3LPZq var x 1 2 for i in x document wri
  • Onvif - 尝试了解它是如何工作的

    首先 我完全没有使用ONVIF的经验 我在一家公司获得了奖学金 并被要求与它一起工作 控制一些相机并从它们那里获取照片 但他们也不知道它是如何工作的 所以没有人可以帮助我很多 我正在阅读 ONVIF 网页上提供的规范 但我不太明白 我知道我
  • iOS 自定义标签栏

    我刚刚开始 iOS 开发 只是在玩 atm 我正在尝试将默认的选项卡栏按钮转换为更自定义的按钮 经过一番查看后 我发现您可以为每个按钮创建自定义状态 所以我这样做了 UIImage selectedImage0 UIImage imageN
  • 合并多个表

    我有很多表格描述了我的小公司的不同类型的支出和收益 并且我发现没有简单的方法来合并我的表格 就像我制作的这个例子一样 我希望在更新最后一个表时自动填充其他表的行 这样我就可以及时预见费用和收益 通过按日期升序自动排序绿色表 到目前为止 我发
  • python 中的结构体对象

    我想创建一个一次性的 结构 对象来保留各种状态标志 我的第一个方法是这样的 javascript风格 gt gt gt status object gt gt gt status foo 3 Traceback most recent ca
  • 如何在 Docker-Compose 中一起使用主机网络和任何其他用户定义的网络?

    我想将 Docker Compose 文件中定义的两个 Docker 容器相互连接 app and db 其中之一 app 也应该连接到host网络 容器应连接到通用的用户定义网络 appnet or default 使用嵌入式DNS来自
  • 如何在显示模态表时禁用 Cocoa 的默认动画?

    我想禁用 Cocoa 在显示模式表时执行的动画 Apple s 表编程指南 http developer apple com mac library documentation Cocoa Conceptual Sheets Concept
  • MySQL:什么是页面?

    在 MySQL 数据库的上下文中 我一辈子都不记得页面是什么 当我看到 8KB 页之类的内容时 这是否意味着每行 8KB 还是 数据库页是组织数据库文件中数据的内部基本结构 以下是有关 InnoDB 模型的一些信息 From 13 2 11
  • 使用 Apache Pig 的数据透视表

    我想知道是否可以在 Apache Pig 中一次性旋转一张表 Input Id Column1 Column2 Column3 1 Row11 Row12 Row13 2 Row21 Row22 Row23 Output Id Name V
  • 如何使 gradle processResources 任务更快

    我正在研究 Spring Boot 项目 并且我正在遭受构建时间的困扰 我的项目的 processResources 任务花费的时间太长 如果资源文件是最新的 大约只需要10秒 但如果文件至少更改一个 则需要几分钟的时间 这是因为一个资源库
  • Python 中图外的图例 - matplotlib

    我试图在 matplotlib 中的绘图之外放置一个相当广泛的图例 图例有相当多的条目 每个条目可能很长 但我不知道具体有多长 显然 这很容易使用 legendHandle plt legend loc center left bbox t
  • 使用毕加索库时目标不能为空

    我实现了一个listView使用 Picasso Library 2 4 0 我遇到了一个问题 发生了什么 我使用 Android Studio 启动应用程序 然后转到我实现的特定片段listView 一切看起来都很好 所有图像都正在加载