为了账号安全,请及时绑定邮箱和手机立即绑定
  • 为item添加点击监听回调 1.思路 RecyclerView相关类中没有为item点击设置任何默认的接口,所以要自己实现 这里是在Adapter实现的。 2.Adapter (1)相关监听接口和设置回调的方法 public interface OnItemClickListener { void onItemClick(View view, int position); void onItemLongClick(View view, int position); } private OnItemClickListener onItemClickListener; //接口实例 public void setOnItemClickListener(OnItemClickListener listener) { this.onItemClickListener = listener; } (2)在onBindViewHolder()设置点击事件,如图 holder.itemView.setOnClickListener(new View.OnClickListener() { holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { 3.在Activity中为Adapter设置点击监听回调,重写点击时的实现 mAdapter.setOnItemClickListener(new MyRecyclerViewAdapter.OnItemClickListener() { public void onItemClick(View view, int position) { Toast.makeText(...).show(); } public void onItemLongClick(View view, int position) { Toast.makeText(...).show(); } });
    查看全部
  • 设置添加/删除item时的动画 1.思路 添加/删除item的接口实现在Adapter中,在Activity中需要为RecyclerView设置动画 可以使用默认的动画,也可以使用第三方开源类 https://github.com/gabrielemariotti/RecyclerViewItemAnimators 2.添加/删除的实现 public void addItem(int position) { mDatas.add(position, "Inserted one"); notifyItemInserted(position); //注意不是notifyDataSetChanged() } public void deleteItem(int position) { mDatas.remove(position); notifyItemRemoved(position); } 3.还是在Activity中通过menu添加两个添加/删除的按钮action case R.id.action_add: mAdapter.addItem(1); break; case R.id.action_delete: mAdapter.deleteItem(1); break; 4.设置动画 mRecyclerView.setItemAnimator(new SlideInOutLeftItemAnimator(mRecyclerView)); 默认的动画可以使用DefaultItemAnimator() 第三方开源动画类添加方法build.gradle repositories { maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } } dependencies { compile 'com.github.gabrielemariotti.recyclerview:recyclerview-animators:0.3.0-SNAPSHOT@aar' }
    查看全部
  • 秒变瀑布流StaggeredView 1.思路 瀑布流每个Item的高度需要是随机的,所以最好是重新实现它的Activity以及Adapter 2.Adapter 因为只需要改一个item高度,所以直接继承前面的adapter就行了 public class StaggeredViewAdapter extends MyRecyclerViewAdapter { (1)构造函数中为每个item生成随机高度 mItemHeight = new ArrayList<Integer>(); for (int i = 0; i < datas.size(); i ++){ mItemHeight.add((int) (100+Math.random()*300)); } (2)重写onBindViewHolder(),设定item高度 public void onBindViewHolder(MyViewHolder holder, int position) { super.onBindViewHolder(holder, position); ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams(); lp.height = mItemHeight.get(position); holder.itemView.setLayoutParams(lp); } 3.Acitivity中和前面的一样 mAdapter = new StaggeredViewAdapter(this, mDatas); mRecyclerView.setAdapter(mAdapter); //为RecyclerView设置布局管理,StaggeredGridView StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(staggeredGridLayoutManager);
    查看全部
  • 变身GridView(垂直/水平) 1.垂直/水平GridVie都是通过LayoutManager实现的,这里在menu添加多个action 有关参数的设置,自己去查API吧 public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_listview: mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); break; case R.id.action_gridview: mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); break; case R.id.action_hor_gridview: mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.HORIZONTAL)); break; case R.id.action_stag_gridview: Intent intent = new Intent(this, StaggeredViewActivity.class); startActivity(intent); break; 最好一个是StaggeredView单独实现的Activity 2.问题 (1)不再使用分割线,因为不太好控制,尤其是GridView会出现画两遍的问题 在每个item布局里直接使用margin来实现分割线 android:layout_margin="3dp" (2)修改item的宽度来调整水平GridView的item显示 <TextView android:layout_width="72dp" android:layout_height="match_parent"
    查看全部
    0 采集 收起 来源:变身GridView

    2018-03-22

  • 实现ListView 4.ViewHolder构造函数需要为view赋值 class MyViewHolder extends RecyclerView.ViewHolder { public MyViewHolder(View view) { super(view); textView = (TextView) view.findViewById(R.id.id_textview); } } 5.在MainActivity中需要为RecyclerView设置Adapter、LayoutManager mAdapter = new MyRecyclerViewAdapter(this, mDatas); mRecyclerView.setAdapter(mAdapter); //设置布局管理 mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL);); 6.为item设置分割线 (1)第三方开源类DividerItemDecoration RecyclerView.ItemDecoration是一个抽象类,必须自己写一个实现类 http://blog.csdn.net/lmj623565791/article/details/45059587 DividerItemDecoration extends RecyclerView.ItemDecoration { (2)自定义颜色渐变的分割线divider.xml <shape android:shape="rectangle" > <gradient android:centerColor= startColor= endColor= android:type="linear" /> <size android:height="4dp"/> </shape> (3)MainActivity设置分割线 mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST););
    查看全部
  • 实现ListView AS里面要添加RecyclerView的库,需要找V7版本的,如图 1.思路 布局使用RecyclerView,然后为其创建一个Adapter,使用LinearLayoutManager设置成ListView 使用github的开源类DividerItemDecoration来实现自定义item之间的分割线 2.布局 <android.support.v7.widget.RecyclerView …… 2.RecyclerView mRecyclerView = findViewById(R.id.id_recyclerview); 3.创建Adapter MyRecyclerViewAdapter extends RecyclerView.Adapter<MyViewHolder> { (1)构造函数 public MyRecyclerViewAdapter(Context context, List<String> datas) { this.mContext = context; this.mDatas = datas; this.mInflater = LayoutInflater.from(context); } (2)onCreateViewHolder需要inflate布局文件并返回ViewHolder public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.simple_textview, parent, false); MyViewHolder viewHolder = new MyViewHolder(view); return viewHolder; } (3)onBindViewHolder()为ViewHolder的view初始化 public void onBindViewHolder(final MyViewHolder holder, final int position) { holder.textView.setText(mDatas.get(position)); }
    查看全部
  • 关于RecyclerView 1.整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。 (1)想要控制其显示的方式,通过布局管理器LayoutManager (2)想要控制Item间的间隔(可绘制),通过ItemDecoration (3)想要控制Item增删的动画,通过ItemAnimator (4)想要控制点击、长按事件,自己写...... 2.使用RecyclerView必须要用到如下类或组件 ViewHolder(就像ListView中使用一下,用来装载每个Item的各个view) LayoutManager(用来控制显示的方式,ListView、GridView、StaggeredView) ItemDecoration(各个item之间的分割线) ItemAnimator(添加/删除时的动画)
    查看全部
  • RecyclerView相关的重要类: 1.Adapter 2.ViewHolder 3.LayoutManager 4.ItemDecoration 5.ItemAnimator
    查看全部
  • RecyclerView和ListView之间的区别: 1.不关心Item是否显示在正确的位置,通过LayoutManager来显示 2.不关心Item键如何分隔,通过itemDecoration来显示 3.不关注item增加与删除的动画效果,itemAnimator来显示 4.recyclerView仅仅关注如何回收与复用view
    查看全部
  • adapter 的区别
    查看全部
  • 第一张ppt
    查看全部
  • 添加ListView 的分割线
    查看全部
  • 实现listView
    查看全部
  • 插入Item时要调用NotifyItemInsert和NotifyItemRemove两个方法。不是Notifysetdatachanged。holder.setLayoutPosition动态获取Item的位置。还有RecycleView没有为item设置监听事件。
    查看全部
    0 采集 收起 来源:总结

    2016-01-29

  • RecyclerView总结
    查看全部
    0 采集 收起 来源:总结

    2016-01-29

举报

0/150
提交
取消
课程须知
大家好,本门课程为中级案例课程。 在学习本门课程之前,小伙伴们需要掌握Android的基础知识。
老师告诉你能学到什么?
1.RecyclerView的基本知识 2.使用RecyclerView实现列表及瀑布流 3.为RecyclerView添加分割线及监听回调

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!