在获取 author 的 avatar 的时候 出现以下错误 , author是AVUser,avatar 是 String
确定 avatar 没有空的。
Attempt to invoke virtual method 'java.lang.String com.avos.avoscloud.AVUser.getString(java.lang.String)' on a null object reference

我的查询代码

AVQuery query = AVQuery.getQuery(FeedBD.class);
query.setCachePolicy(AVQuery.CachePolicy.CACHE_THEN_NETWORK);
query.include("author");
query.include("pet.master");
query.include("praise");
query.whereNotEqualTo("imageFile", null);
query.setLimit(limit); // 设置每页多少条数据
query.setSkip(page * limit); // 从第几条数据开始
query.orderByDescending("praiseCount");// 根据评论数排序
query.setMaxCacheAge(TimeUnit.DAYS.toMillis(Constant.CACHEAGE));

报错的地方是 author.getString("avatar");

查询出来的数据貌似没什么问题,挺正常

你好,AVUser 是一个 AVObject 对象,并不是一个 String 类型,所以需要使用 author.getAVObject("avatar"); 这个方法。

avatar 是string呀
author才是user

抱歉,我看错。请贴下更多 log,这应该是 JavaBean 不标准,无 getter / setter 导致的数据序列化的问题。

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.avos.avoscloud.AVUser.getString(java.lang.String)' on a null object reference
at com.lyz.pet.adapter.StaggeredTrendAdapter.getView(StaggeredTrendAdapter.java:121)
at com.etsy.android.grid.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)
at com.etsy.android.grid.ExtendableListView.obtainView(ExtendableListView.java:1694)
at com.etsy.android.grid.ExtendableListView.makeAndAddView(ExtendableListView.java:1529)
at com.etsy.android.grid.ExtendableListView.fillDown(ExtendableListView.java:1415)
at com.etsy.android.grid.ExtendableListView.fillGap(ExtendableListView.java:1383)
at com.etsy.android.grid.ExtendableListView.moveTheChildren(ExtendableListView.java:1356)
at com.etsy.android.grid.ExtendableListView.access$1200(ExtendableListView.java:60)
at com.etsy.android.grid.ExtendableListView$FlingRunnable.run(ExtendableListView.java:2079)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:800)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at android.view.Choreographer.doFrame(Choreographer.java:571)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:786)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5773)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1005)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:800)

这个错误比较平凡,影响列表数据的显示,麻烦看下是什么原因。

请帖下 StaggeredTrendAdapter.java:121 这一行的代码。

按报错 blog 推测,就是 getString(java.lang.String) 时的键名,在 Bean 里找不到成员变量,请检查。

121行 代码是 Picasso.with(mContext).load(feed.getAuthor().getString("avatar"))

Picasso.with(mContext).load(feed.getAuthor().getString("avatar"))
.transform(ActivityUtil.corner(mContext, Constant.BORDER_WIDTH, Constant.radius.RADIUS_CIRCULAR))
.placeholder(R.drawable.default_avatar)
.error(R.drawable.default_avatar).into(holder.avatarImg);