(一)前言:
RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好。
(二)介绍:
RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。RecyclerView用以下两种方式简化了数据的展示和处理:
- ①使用LayoutManager来确定每一个item的排列方式。
- ②为增加和删除项目提供默认的动画效果。
你也可以定义你自己的LayoutManager和添加删除动画,RecyclerView项目结构如下:
Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter的适配器,作用是将数据与每一个item的界面进行绑定。
LayoutManager:用来确定每一个item如何进行排列摆放,何时展示和隐藏。回收或重用一个View的时候,LayoutManager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的View和频繁的调用findViewById方法(与ListView原理类似)。
(三)用法:
1、如果你用的是Android Studio,必须添加依赖库:
2、编写代码:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
这里我根布局是SwipeRefreshLayout,你们可以不管他(ps:你换你自己的布局就可以,主要接下来文章我打算写SwipeRefreshLayout与Viewpager滑动冲突),主要看RecyclerView。
然后在Activity中:
/**
* Created by zjp on 2016/4/21 10:00.
*/
public class ViewConflickActivity extends AppCompatActivity {
@Bind(R.id.swipeRefreshLayout)
SwipeRefreshLayout swipeRefreshLayout;
@Bind(android.R.id.list)
RecyclerView recyclerView;
private LinearLayoutManager linearLayoutManager;
private int index;
private RefreshAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.conflick_layout);
ButterKnife.bind(this);
initViews();
}
private void inidViews() {
//设置刷新时动画的颜色,可以设置4个
swipeRefreshLayout.setProgressBackgroundColorSchemeResource(android.R.color.white);
swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_light, android.R.color.holo_red_light, android.R.color.holo_orange_light, android.R.color.holo_green_light);
}