探究如何以jar包导入的形式使用RecyclerView
由于项目中要求使用RecyclerView,但是使用的Android系统是经过公司阉割过的,导致我们只能基于API15来build我们的项目,经过多次的调研发现,目前使用RecyclerView都是直接在build.gradle文件中配置好的jar信息,然后AS会自动下载好相应的jar包。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:recyclerview-v7:22.1.1' compile 'com.android.support:appcompat-v7:22.1.1' }
这种方式使用起来会比较简单,但是缺点也比较多:
(1)下载相应的jar特别慢,越~狱速度会快点
(2) 每次使用都要去下载相应的jar,特别麻烦
(3) 必须用API > 21SDK版本build才能使用
我们的项目只能用API15,蛋疼死了。。。明明知道RecyclerView的强大功能,我只能看着别人使用。
有没有直在项目中接导入RecyclerView的jar就能在低于API15上的环境上运行呢?
百度上我目前还没发现能成功的,即使成功build的版本也至少是API >= 21,经过多次爬坑,
终于成功了,下面分享给大家。
(1)先用SDKManager下载好support包(要使用RecyclerView需要v7和v4包)
(2) 接着会在\sdk\extras\android\support\V7下找到RecyclerView文件,里面放着recyclerView的jar包和一些资源文件。
很多人都会很自然的去把libs下面的android-support-v7-recyclerview.jar放在一个新建好的项目中,以为这样就可以使用RecyclerView了,但是后面多次尝试后发现都失败了。
查看源码得知,失败的原因有:
(1) recyclerView引入了support V4中的类,自然要导入V4包(走到这一步其实还不行)
(2)recyclerView中引入了R.Styleable类,这不就是自定义属性XML资源生成的类吗?坑爹的google并没有帮我们把这些资源自动载入jar包中,此时终于明白了为什么光导入jar包其实是不行的,或许引入上面RecyclerView文件夹下的资源文件,生成对应的资源类,然后以一个lib库的形式导入主项目,兴许就成功了。
为了验证我的猜想,此时我新建一个RecyclerView的lib库,并导入相应的jar和资源文件,并用API15去构建该项目,果不其然,项目成功运行。(注意:lib库的包名必须是android.support.v7.recyclerview,以保证生成的类为android.support.v7.recyclerview.R.styleable)
总结:recylcerView不能单独已jar的形式导入项目中使用,因为RecyclerView源码中引入了一个自定义属性的类,所以要以model lib库的形式依赖主项目才能成功运行.
需要demo的同学私密我,坑爹的,上传三次都失败了~!