使用Recyclerview控件遇到的一些问题

最近学习Android编程权威指南(第2版),学习到Recycleview控件时出现了一些小问题。

一、RecyclerView每个item占满了屏幕

解决方案:

1、检查item子项布局的layout_height是否为match_parent,如果是,改为wrap_content。

2、这个方法是百度大神看到的,直接在onCreateViewHolder方法中,把inflater方法中第二个参数改为null。

      例:

View view = layoutInflater.inflate(R.layout.list_item_crime, parent, false);
把上面的parent改为null即可。


二、获取当前点击item的position。(用于单项更新item)

方案:在onBindViewHolder方法中setTag,在CrimeHolder类的点击事件中getTag。

例:

        public void onBindViewHolder(CrimeHolder holder, int position) {
            holder.itemView.setTag(position);
        }
        public void onClick(View v) {
        int mPosition= (int) v.getTag();
        }

三、运行时直接挂了,错误代码是:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.lightsensortest, PID: 6111
                  java.lang.NoSuchMethodError: No static method getDisplay(Landroid/view/View;)Landroid/view/Display; in class Landroid/support/v4/view/ViewCompat; or its super classes (declaration of 'android.support.v4.view.ViewCompat' appears in /data/data/com.example.lightsensortest/files/instant-run/dex/slice-com.android.support-support-v4-23.4.0_83f349ae45b4ac012684ad7b8d7a86d34cd85d6e-classes.dex)
                      at android.support.v7.widget.RecyclerView.onAttachedToWindow

刚开始愣是没知道怎么回事,百度了一下,知道了是RecyclerView的V7中的V4包与程序中用于FragmentActivity引入的V4包不一样导致的,检查了build.gradle,才知道是自己偷懒,直接alt+enter直接引用V4包,没有去Dependencies中添V4包。

解决方案:进入Android Studio 中的Dependencies,按左下角+号,选Library Dependency。 搜索com.android.support:support选最新的版本就行了(前提是RecyclerView也是从这里导入的)

重新运行时记得先把旧的项目卸载了,这样才会全部重新编译。

你可能感兴趣的:(Android学习笔记)