com.atguigu.shoppingmall, PID: 11093 java.lang.NullPointerException: Attempt to write to field 'int android.support.v7....widget.RecyclerView$ViewHolder.mItemViewType' on a null object reference at android.support.v7.widget.RecyclerView...$Adapter.createViewHolder(RecyclerView.java:5834) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition...(RecyclerView.java:5057) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java...看问题的角度不同了,bug也就解决了... 下图附上我的bug截图: ? return 6导致的问题: ?
1、RecyclerView的基本用法 首先主Activity的布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk...="true" android:background="#FF0000" android:scrollbars="none" /> Item的布局文件...其实是这样的,我们创建的ViewHolder必须继承RecyclerView.ViewHolder,这个RecyclerView.ViewHolder的构造时必须传入一个View,这个View相当于我们...还有一点,ListView中convertView是复用的,在RecyclerView中,是把ViewHolder作为缓存的单位了,然后convertView作为ViewHolder的成员变量保持在ViewHolder...LayoutManager,目前只有一个实现类,就是LinearLayoutManager,可以设置为水平或者垂直。
动画,指定Item之间的分隔线 RecyclerView相关的重要类 Adapter ViewHolder LayoutManager ItemDecoration ItemAnimator 添加RecyclerView...控件依赖包 Android Studio开发工具,在本项目的build.gradle文件中添加 compile 'com.android.support:recyclerview-v7:23.1.1...采用layout_margin的方式 * * 主要是动态设置View的高度 adapter类中的 onBindViewHolder */ public class StaggeredGridLayuoutAct...onCreateViewHolder(ViewGroup parent, int viewType) { // 动态加载Item的布局文件 View view = inflater.inflate...方法一:利用回调的方式实现(不太完善,仍可实现) 实现步骤如下: 在adapter类中,定义接口,接口中定义两个方法分别对应click和longClick,定义完接口,添加接口和设置Adapter
大家好,又见面了,我是你们的朋友全栈君。...效果图: 实现步骤: 1、首先在 build.gradle 文件中引入 RecycleView implementation 'com.android.support:recyclerview-v7:...28.0.0' 添加完成后,在右上角有一个同步Sync Now的提示,点击进行同步构建,接下来修改activity_main.xml的代码 2、在 activity_main.xml 布局文件中加入RecyclerView....widget.RecyclerView> 接着创建RecyclerView的列表项布局 <?...package com.newland.project3_4; import android.support.annotation.NonNull; import android.support.v7
getView方法不需自己写,我们只需要写好Viewholder,View的复用已经封装好了。...还可管理滚动 & 循环利用 4.3 ItemAnimator 这个类可以实现增删动画,而且不想设置的话它的默认效果已经很好了。 5....使用步骤 定义主xml布局 根据需要定义RecyclerView每行所实现的xml布局 定义一个Adapter类继承RecyclerView.Adapter,重写里面的方法。...--设置一个RecyclerView--> 在AndroidStudio1.5使用support-v7包: 右键文件目录的app目录进入Moudle Setting...} 实现点击事件: 在Viewholder里面设置了点击事件监听器 通过调用OnItemClickListener的接口方法回调MainActivity里的方法。
RecyclerViewAdapter类修改后的代码如下: package com.jinyu.cqkxzsxy.android.advancedviewsample.adapter; import...vewHolder = new ViewHolder(view); return vewHolder; } // 将数据与界面进行绑定的操作 @Override...OnItemLongClickListener { boolean onLongClick(View parent, int position); } // 自定义的ViewHolder...,持有每个Item的的所有界面组件 public class ViewHolder extends RecyclerView.ViewHolder { public TextView...this, "长压了第" + (position + 1) + "项", Toast.LENGTH_SHORT).show(); return true; } } 其余布局文件代码不变
RecyclerView可以看作是ListView的进化版本,当然RecyclerView并不是继承ListView的,RecyclerView直接继承于ViewGroup父类。...除了上面两个主要元素,通常还会使用到如下三个类: ViewHolder:维持了所有被数据填充的实体的视图的引用。 ItemDecoration:一个实体的周围的装饰。...继承RecyclerView.AdapterViewHolder>类,完成内部类 ViewHolder ,并重写以下3个主要方法,具体代码如下: package...0 : mDatas.size(); } // 自定义的ViewHolder,持有每个Item的的所有界面组件 public class ViewHolder extends...新建RecyclerViewActivity.java文件,加载上面新建的布局文件,具体代码如下: package com.jinyu.cqkxzsxy.android.advancedviewsample
(1)新建布局文件,在SwipeRefreshLayout中插入一个RecyclerView。...类CatNamesRecyclerViewAdapter,其中方法refreshContent是用来混淆mCatNames的,当做是内容刷新之后的结果。....getStringArray(R.array.cat_names); } public class CatNamesViewHolder extends RecyclerView.ViewHolder..., int i) { String catName = getItem(i); viewHolder.mCatNameTextView.setText(catName);...,setOnRefreshListener是用来添加我们下拉刷新的具体操作的监听器的,这里是虚拟地去加载了新数据。
继续使用上期的案例,首先在RecyclerViewAdapter类中新增一个插入和删除处理的公开方法,RecyclerViewAdapter类修改后的代码如下: package com.jinyu.cqkxzsxy.android.advancedviewsample.adapter...vewHolder = new ViewHolder(view); return vewHolder; } // 将数据与界面进行绑定的操作 @Override...OnItemLongClickListener { boolean onLongClick(View parent, int position); } // 自定义的ViewHolder...,持有每个Item的的所有界面组件 public class ViewHolder extends RecyclerView.ViewHolder { public TextView...this, "长压了第" + (position + 1) + "项", Toast.LENGTH_SHORT).show(); return true; } } 其余布局文件代码不变
------------------------ 那么让我们通过一些Demo来了解RecyclerView的基本使用 android studio build.gradle文件中 dependencies...的标签 android.support.v7.widget.RecyclerView> 1 ViewHolder 必须要继承 RecyclerView.ViewHolder 注意RecyclerView不再提供onItemClick事件监听,所以需要我们自己手工写监听事件的方法 private...ViewHolder,这个ViewHodler是我们自己的,不要导入v7包下的ViewHolder, 之后要重写三个方法 private class MyRecycleAdapter extends RecyclerView.Adapter...viewHolder, int i) { 22 // 1.这里进行图片的加载 23 viewHolder.textView.setText(strings.get
"wrap_content" android:id="@+id/textView1" android:text="textView1" /> android.support.v7...match_parent" android:layout_height="match_parent" android:id="@+id/recyclerView"> android.support.v7...反转后由上面开始展示 layoutManager.setReverseLayout(true);//列表翻转 实现Item添加和删除 颜色不准 使用onBindViewHolder方法根据每个model的信息显示不同的背景色...,发现背景色乱添加,并不是自己想要的 public void onBindViewHolder(@NonNull BundlePhysicalRecAdapter.ViewHolder viewHolder...(Color.RED); } } 只有第一个model没问题,之后就乱了 正确的做法是重新获取int的位置 @Override public int
/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent"> android.support.v7...> { private List mFruitList; static class ViewHolder extends RecyclerView.ViewHolder... public RecyclerView mCollectRecyclerView;//定义RecyclerView //定义以goodsentity实体类为对象的数据集合 private...position); // holder.mItemGoodsImg; holder.mItemGoodsName.setText(data.goodsName);//获取实体类中的...name字段并设置 holder.mItemGoodsPrice.setText(data.goodsPrice);//获取实体类中的price字段并设置 } /**
更强大的滚动控件RecyclerView 新建FruitAdapter02: package com.example.listviewtest; import android.support.v7.widget.RecyclerView...> { private List mFruitList; static class ViewHolder extends RecyclerView.ViewHolder...{ ImageView fruitImage; TextView FruitName; public ViewHolder(View view) {...holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder...app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7
recyclerview-v7-21.0.0.aar,该aar文件其实是个压缩文件,解压该文件可得到classes.jar,将该jar包更名并加入到你的工程,上面的运行错误应该就没有了。 ...循环适配器 RecyclerView有专门的适配器类,即RecyclerView.Adapter。...: 1、自带ViewHolder及其重用功能,无需开发者手工重用ViewHolder; 2、未自带列表项的点击和长按功能,需要开发者自己实现点击和长按事件的监听; 3、增加区分不同列表项的视图类型...,方便开发者根据类型加载不同的布局; 4、可单独对个别项进行增删改操作,无需刷新整个列表; 下面是RecyclerView.Adapter的一个自定义类的代码例子: import com.example.exmrecycler.R...默认一项占一列,如果想某项占多列,则可在此设置自定义的占位规则,即由抽象类GridLayoutManager.SpanSizeLookup派生出具体的实现类。
compile 'com.android.support:recyclerview-v7:23.2.0' } 然后点击“Sync Project with Gradle files”,让IDE去下载适当的资源文件...因为ListView并没有严格的ViewHolder设计模式。但是在使用RecyclerView的时候,Adapter必须实现至少一个ViewHolder,必须遵循ViewHolder设计模式。...Adapter所持有的Itme数量 RecyclerView.ViewHolder ViewHolder的基本用法是用来存放View对象。....widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7...RecyclerView.ItemDecoration是一个抽象类,可以通过重写以下三个方法,来实现Item之间的偏移量或者装饰效果: public void onDraw(Canvas c, RecyclerView
继续使用WidgetSample工程的advancedviewsample模块,在src/main/res/layout/目录下创建swiperefreshlayout_layout.xml文件,在其中填充如下代码片段...然后新建SwipeRefreshLayoutActivity.java文件,加载上面的布局文件,填充的代码如下: package com.jinyu.cqkxzsxy.android.advancedviewsample...在RecyclerView数据动态更新案例的基础上来修改,首先修改布局文件,在RecyclerView的外层LinearLayout替换为SwipeRefreshLayout,修改后的recyclerview_layout.xml...文件代码如下: 的的所有界面组件 public class ViewHolder extends RecyclerView.ViewHolder { public TextView
RecyclerView 添加 divider 的标准姿势 当你想给条目间添加 divider 时,你可能自然而然的去尝试这种方式: android.support.v7.widget.RecyclerView...该方法的参数为 RecyclerView.ItemDecoration,该类为抽象类,且官方目前并没有提供默认的实现类,我们只能自己来实现。...实现方式 主要就要使用到 ItemTouchHelper,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。...的ViewHolder,有了这2个 ViewHolder,我们就可以交换他们的数据集并调用 Adapter 的notifyItemMoved 方法来刷新 item。...在上面我们的 Callback 类中有一个方法: public boolean isLongPressDragEnabled() { return true; } 这个方法是为了告诉 ItemTouchHelper
android:layout_height="match_parent" tools:context="com.example.recyclerviewtest.MainActivity"> android.support.v7...recycler_view" android:layout_width="match_parent" android:layout_height="match_parent"> android.support.v7...> { private List mFruitList; static class ViewHolder extends RecyclerView.ViewHolder...{ ImageView fruitImage; TextView fruitName; public ViewHolder(View itemView...> { private List mFruitList; static class ViewHolder extends RecyclerView.ViewHolder
CoordinatorLayout是在desgin包下的一个用于协调子控件的组件,可以解决绝大部分滑动联动问题,使用方法也很简单,为观察者注册一个Behavior,在Behavior指定要监听的控件(可以多个...) 这边实现一个TextView随着另一个TextView的移动而移动 <?...match_parent" android:layout_height="match_parent" tools:context=".FloatingActivity"> android.support.v7...recyclerview" android:layout_width="match_parent" android:layout_height="match_parent">android.support.v7...viewHolder = new ViewHolder(textView); return viewHolder; } @Override
领取专属 10元无门槛券
手把手带您无忧上云