Android开发之RecyclerView的基本使用(实现常用的4种效果)
2017-05-14 11:23
681 查看
recyclerView的强大无需我多言,现在来总结一下recyclerView的常用的4种效果。
第一种效果:listView垂直效果(这个最常用)
第二种效果:gridview效果
第三种效果:水平效果
第四种效果:瀑布流效果
-----------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------
开始代码走起......
第一种效果的核心代码(listView垂直显示效果):
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));第二种效果的核心代码(gridview效果):
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));第三种效果的核心代码(水平效果):
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, LinearLayoutManager.VERTICAL));
-----------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------
可能上面区区四行代码对于刚入门的小白有点蒙蔽,好啦下面开始撸起recyclerView的另一个核心之处adapter
新建一个MyRecyclerViewAdapter类继承自RecyclerView.Adapter<MyStaggedRecyclerAdapter.MyViewHolder>
为了更好的显示瀑布流的效果,所以又重新新建一个MyStaggedRecyclerAdapter类继承自RecyclerView.Adapter<MyStaggedRecyclerAdapter.MyViewHolder>
MainActivity代码:
切记要导入recyclerView的支持包。
build.gradle里面加入:compile 'com.android.support:recyclerview-v7:25.2.0'即可
-----------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------
下一章继续实现recyclerView的其他效果。。。
第一种效果:listView垂直效果(这个最常用)
第二种效果:gridview效果
第三种效果:水平效果
第四种效果:瀑布流效果
-----------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------
开始代码走起......
第一种效果的核心代码(listView垂直显示效果):
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));第二种效果的核心代码(gridview效果):
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));第三种效果的核心代码(水平效果):
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));第四种效果的核心代码(瀑布流效果):
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, LinearLayoutManager.VERTICAL));
-----------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------
可能上面区区四行代码对于刚入门的小白有点蒙蔽,好啦下面开始撸起recyclerView的另一个核心之处adapter
新建一个MyRecyclerViewAdapter类继承自RecyclerView.Adapter<MyStaggedRecyclerAdapter.MyViewHolder>
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolder> { private ArrayList<String> mList; public MyRecyclerAdapter(ArrayList<String> list) { mList = list; } @Override public MyRecyclerAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyRecyclerAdapter.MyViewHolder holder, int position) { holder.tv.setText(mList.get(position)); } @Override public int getItemCount() { return mList.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = (TextView) itemView.findViewById(R.id.tv); } } }
为了更好的显示瀑布流的效果,所以又重新新建一个MyStaggedRecyclerAdapter类继承自RecyclerView.Adapter<MyStaggedRecyclerAdapter.MyViewHolder>
public class MyStaggedRecyclerAdapter extends RecyclerView.Adapter<MyStaggedRecyclerAdapter.MyViewHolder> { private ArrayList<String> mList; private List<Integer> heights; public MyStaggedRecyclerAdapter(ArrayList<String> list) { mList = list; heights = new ArrayList<Integer>(); for (int i = 0; i < list.size(); i++) { heights.add((int) (200 + Math.random() * 50)); } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { //绑定数据 LayoutParams layoutParams = holder.tv.getLayoutParams(); layoutParams.height = heights.get(position); holder.tv.setBackgroundColor(Color.rgb(100, (int) (Math.random() * 255), (int) (Math.random() * 255))); holder.tv.setLayoutParams(layoutParams); holder.tv.setText(mList.get(position)); } @Override public int getItemCount() { return mList.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = (TextView) itemView.findViewById(R.id.tv); } }
}
MainActivity代码:
public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private ArrayList<String> mList; private MyRecyclerAdapter mRecyclerAdapter; private MyStaggedRecyclerAdapter myStaggedRecyclerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecyclerView = (RecyclerView) findViewById(R.id.rv); mRecyclerAdapter = new MyRecyclerAdapter(getData()); // mRecyclerView.setLayoutManager(new LinearLayoutManager(this));//默认listView垂直效果 // mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)); // mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));//gridview效果 myStaggedRecyclerAdapter = new MyStaggedRecyclerAdapter(getData()); //瀑布流效果 mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, LinearLayoutManager.VERTICAL)); mRecyclerView.setAdapter(myStaggedRecyclerAdapter); } protected ArrayList<String> getData() { mList = new ArrayList<String>(); for (int i = 0; i < 30; i++) { mList.add("第" + i + "个item"); } return mList; } }
切记要导入recyclerView的支持包。
build.gradle里面加入:compile 'com.android.support:recyclerview-v7:25.2.0'即可
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' compile 'com.android.support:recyclerview-v7:25.2.0' }
-----------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------
下一章继续实现recyclerView的其他效果。。。
相关文章推荐
- Android开发之使用ViewPager实现图片左右滑动切换效果
- Android开发:使用ViewDragHelper实现抽屉拉伸效果
- Android开发之实现瀑布流效果(RecyclerView)
- Android开发之实现水平滚动效果—RecyclerView
- Android-使用RecyclerView的ItemDecoration 实现炫酷的 吸顶效果
- Android开发之使用ViewDragHelper实现侧边栏滑动的效果
- Android开发——RecyclerView特性以及基本使用方法(一)
- android开发之&使用ViewPager加gridView实现菜单按钮分页滑动(类似QQ表情选择翻页效果)
- android开发之&使用RecyclerView实现瀑布流布局(二)
- Android——RecyclerView——使用ItemDragHelper来实现酷炫拖拽效果
- Android开发-使用自定义View实现loading效果
- android花屏效果的实现(ViewPager的基本使用)
- android新特性:使用RecyclerViewHeader一键添加RecyclerView头布局并实现轮播效果
- Android开发:使用ViewDragHelper实现抽屉拉伸效果
- Android开发——RecyclerView特性以及基本使用方法(二)
- 【Android开发】RecyclerView的基本使用
- (4.1.11.1)Android中使用RecyclerView和CardView实现瀑布流效果(StaggeredGrid)
- android开发之滑动效果实现图片浏览_ViewFilpper的使用
- Android 中使用 RecyclerView + SnapHelper 实现类似 ViewPager 效果
- Android时间轴(Timeline)效果的实现(使用RecyclerView)