借鉴于http://blog.csdn.net/lmj623565791/article/list/2
效果图如下:
主要代码:
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private SwipeRefreshLayout swipeRefreshLayout; private LinearLayoutManager linearLayoutManager; private RAdapter rAdapter; private int lastVisibleItem; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); List<String> list=new ArrayList<>(); for (int i=0;i<50;i++){ list.add("数据"+i); } initView(); //设置item动画 recyclerView.setItemAnimator(new DefaultItemAnimator1()); //设置布局管理器 //listview linearLayoutManager= new LinearLayoutManager(this); //逆向滚动 // linearLayoutManager.setReverseLayout(true); recyclerView.setLayoutManager(linearLayoutManager); //设置分割线 ListViewDividerItemDecoration listView 的分割线 可以用系统的 也可以用自定义的 在styles里面定义 <item name="android:listDivider">@drawable/divider_bg</item> recyclerView.addItemDecoration(new ListViewDividerItemDecoration(this, ListViewDividerItemDecoration.VERTICAL_LIST)); //gridview // recyclerView.setLayoutManager(new GridLayoutManager(this,4)); // //设置分割线 GridViewDividerDecoration listView 的分割线 // recyclerView.addItemDecoration(new GridViewDividerDecoration(this)); //瀑布流 // recyclerView.setLayoutManager(new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL)); // 注意StaggeredGridLayoutManager构造的第二个参数传一个orientation,如果传入的是StaggeredGridLayoutManager.VERTICAL代表有多少列;那么传入的如果是StaggeredGridLayoutManager.HORIZONTAL就代表有多少行 //设置分割线 GridViewDividerDecoration listView 的分割线 // recyclerView.addItemDecoration(new GridViewDividerDecoration(this)); // 在适配器的onBindViewHolder方法中为我们的item设置个随机的高度 就会出现瀑布流的效果 imageview也可以让控件包裹内容 同样实现这个效果 rAdapter=new RAdapter(list); rAdapter.setOnItemClickLitener(new RAdapter.OnItemClickLitener() { @Override public void onItemClick(View view, int position) { // startActivity(new Intent(MainActivity.this,SecondActivity.class)); rAdapter.removeData(position); } @Override public void onItemLongClick(View view, int position) { Toast.makeText(MainActivity.this, position + " 被长点击了", Toast.LENGTH_SHORT).show(); } }); recyclerView.setAdapter(rAdapter); //设置一个颜色 // swipeRefreshLayout.setProgressBackgroundColorSchemeColor(getResources().getColor(android.R.color.holo_red_light)); //设置进度条颜色 最多可设置四个 swipeRefreshLayout.setColorSchemeColors(getResources().getColor(android.R.color.holo_red_light),getResources().getColor(android.R.color.holo_green_light),getResources().getColor(android.R.color.holo_blue_bright)); //swipeRefreshLayout 设置下拉刷新事件 swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Toast.makeText(MainActivity.this, "刷新数据成功", Toast.LENGTH_SHORT).show(); //开启请求 page=1 // 模拟添加数据 rAdapter.addData(5); rAdapter.notifyDataSetChanged(); //成功了 关闭刷新 swipeRefreshLayout.setRefreshing(false); } }); //滚动监听 recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState ==RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem+ 1 ==rAdapter.getItemCount()) { //开启网络请求 加载更多 rAdapter.addData(5); rAdapter.notifyDataSetChanged(); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); lastVisibleItem =linearLayoutManager.findLastVisibleItemPosition(); } }); } private void initView() { recyclerView = ((android.support.v7.widget.RecyclerView) findViewById(R.id.recyclerView)); swipeRefreshLayout = ((SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout)); } }布局xml:
<LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" > <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="#ffff0000" android:dividerHeight="10dp" ></android.support.v7.widget.RecyclerView> </android.support.v4.widget.SwipeRefreshLayout> </LinearLayout>源码下载地址:
http://download.csdn.net/detail/lzq520210/9421855