在Android4.x源码/eclipse编译使用RecycleView
坑点:
1.如果你的源码编译环境java是1.6版本,直接用sdk/extras/android/support/v7/recyclerview/libs/android-support-v7-recyclerview.jar,编译时会报bad class file magic (cafebabe) or version (0033.0000)错误,并且在运行的时候找不到RecyclerView。原因是其他版本jar包是java1.7或者更高版本编译出来的,源码不支持。2.如果不用和recyclerview对应的android-support-v4包,编译可以通过,但是运行时会出错导致crash。
3.如果在Android.mk里忘了添加include $(call all-makefiles-under,$(LOCAL_PATH))这句话,编译可以通过,但是运行时会找不到RecyclerView.class导致crash。jar包都没打进apk你还想玩?
4.RecyclerView不设置LayoutManager也会导致crash,想看下运行效果好难.
正确使用方法:
1.从sdk目录下抠出的recyclerview和android-support-v4 jar包。如果源码环境是java1.6版本,jar包一定要用21.0.0版本。
1.1解压缩sdk目录下recyclerview-v7-21.0.0.aar,修改目录下class.jar文件名android-support-v7-recyclerview_for_eclipse_or_source.jar。名字可以随便取,为了区别android-support-v7-recyclerview.jar我加了后缀。
路径:sdk/extras/android/m2repository/com/android/support/recyclerview-v7/21.0.0/recyclerview-v7-21.0.0.aar。
1.2.解压缩sdk目录下support-v4-21.0.0.aar,修改目录下class.jar文件名android-support-v4_for_eclipse_or_source.jar。要用recyclerview同一版本的android-support-v4,不然编译会出错。
路径:sdk/extras/android/m2repository/com/android/support/support-v4/21.0.0/support-v4-21.0.0.aar。
2.把jar包复制到工程libs目录下,如果用源码编译还要修改Android.mk文件。
## Build Apk #################################
...
LOCAL_STATIC_JAVA_LIBRARIES := librecyclerview libandroidv4
...
include $(BUILD_PACKAGE)
## 添加第三方jar #################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := librecyclerview:libs/android-support-v7-recyclerview_for_eclipse_or_source.jar \
libandroidv4:libs/android-support-v4_for_eclipse_or_source.jar \
include $(BUILD_MULTI_PREBUILT)
include $(call all-makefiles-under,$(LOCAL_PATH))
3.在加载界面的时候要设置LayoutManager,不然会报空指针异常。
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));