记项目中的一次错误之RecyclerView
来源:互联网 发布:电子打鼓软件下载 编辑:程序博客网 时间:2024/05/18 03:12
前言
项目中viewpager中的fragment中使用了RecyclerView显示当前发布的商品和结束发布的商品
现象
上午测试的时候出现了一个很奇怪的错误,viewpager总共有两页,从第一页移动到第二页的时候,没有反应。从第二页往回滑动的时候,总是程序直接奔溃。错误打印如下:
java.lang.NullPointerException at android.support.v7.widget.RecyclerView.onInterceptTouchEvent
ps:在调试这个的过程中,发现后台使用desc字段表示描述(使用注解 @column,加上@Lob也是不行),从java实体类使用hibernate自动生成更新数据库表时无法创建该表。又是查注解,又是改变字段长度。反反复复得折腾了一遍都不行,后来其删除就可以创建表了,猜想可能是字段名的原因。
以前在项目中也遇到过数据库使用了一个struts的保留字,struts封装参数成对象的时候一直出错。后来才知道这是保留字
解决
网上大概意思是说没有设置布局。但是我是的确添加了是在notifyDataSetChange之前设置了布局,但是就是报错。
其实是在goodses.size()==0的情况下没有设置布局。但是不知道为什么就潜意识的觉得这种情况不需要设置布局,只有在adapter更新的时候才需要。
btProgressDialog.dismiss(); if (msg.isSuccess() && goodses.size() == 0) { Toast.makeText(mContext, "您还没有发布过商品,去发布商品吧", Toast.LENGTH_LONG).show(); } else if((msg.isSuccess() && goodses.size() > 0)) { mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext)); mAdapter.notifyDataSetChanged(goodses); }else { Toast.makeText(mContext, msg.getMsg(), Toast.LENGTH_LONG).show(); }
其实细细思索,真是无稽之谈。于是在所有的if情况都set布局,ok不管怎么滑都没事。再一想,在onPostExecute中显示一定需要执行一次设置布局,那么肯定是我理解错了,在onPre 设置布局或者更甚在显示RecyclerView之后就应该设置布局。在fragment中的initView中直接给RecyclerView设置布局。运行,怎么滑动都是ok。
private void initView() { rv_current_publish.setLayoutManager(new LinearLayoutManager(getActivity())); new MyPublishAsyncTask(getActivity(),goodses,rv_current_publish,isQueryCurrentPublish).execute(); }
血泪教训啊:一定要记得为RecyclerView添加布局
总结
在解决这个的过程中发现了一个新的问题
断点调试从2直接跳到 最后一句 return e.getMsg();而且这一句
Msg.generateSuccMsg();详细代码
public static Msg generateSuccMsg(){ return new Msg(true,"ok"); }
图中2箭头的语句绝对不会产生异常,但是现实就是从2断点往下执行时直接跳到左边转弯箭头指向位置。不仅跳到catch中了,而且还跳过了一句,直接执行return e.getMsg()了。不知道是我的问题还是编辑器的原因。???
- 记项目中的一次错误之RecyclerView
- 项目之SwipeRefreshLayout和RecyclerView
- 记一次nginx错误
- 记一次编译错误
- Vaadin学习笔记之记一次编译错误
- 记一次项目任务
- 记一次投票项目
- JPA项目中的错误
- 项目中的错误
- 项目中的一次典型TDD实践
- 记一次错误“net::ERR_INCOMPLETE_CHUNKED_ENCODING”
- 记一次RecyclerView使用过程遇到的坑
- spring-boot初学者:记一次搭建web项目404的错误排查过程
- 一次完整的项目之旅
- 记一次Nginx + PHP + YAF安转错误之重写规则错误导致出现404错误页面
- #PHP#记一次网站项目
- 记一次项目升级经历
- 记一次工作中的不愉快
- 楼道声光控工作原理
- POJ 1050 To the Max
- 关于jquery 如何判断checkbox 是否选中
- 【剑指offer】-从尾到头打印链表
- LeetCode Delete Node in a Linked List 链表
- 记项目中的一次错误之RecyclerView
- 记录——《C Primer Plus (第五版)》第十章编程练习第三题
- bzoj1621【Usaco2008 Open】Roads Around The Farm
- 安卓中webview与javascript的交互
- linux常用命令chmod,chown,chgrp
- 黑马程序员---正则表达式小结
- 常用的android开发权限
- c++ primer第五版(中文)习题答案 第二章第五节-处理类型
- 记录——《C Primer Plus (第五版)》第十章编程练习第四题