Recyclerview的简单使用
2016-01-13 16:36
441 查看
[code] 主布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:scrollbars="none" /> </RelativeLayout> Item 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/item_iamge" android:layout_width="74dp" android:layout_height="74dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:scaleType="center" /> <TextView android:id="@+id/item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/item_iamge" android:layout_centerHorizontal="true" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:textColor="#000000" android:text="test" android:textSize="13sp" /> </RelativeLayout> MyTestRecyclerview: public class MyTestRecyclerview extends AppCompatActivity { private RecyclerView recycler; private RecyclerAdapter recyclerAdapter; private List<Integer> date; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); setContentView(R.layout.acticity_recycler); recycler = (RecyclerView) findViewById(R.id.recycler); //设置布局管理器 GridLayoutManager linearLayoutManager = (GridLayoutManager) new GridLayoutManager(this, 3); // LinearLayoutManager linearLayoutManager = (LinearLayoutManager) new LinearLayoutManager(this); // StaggeredGridLayoutManager linearLayoutManager=new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL); linearLayoutManager.setOrientation(GridLayoutManager.HORIZONTAL); recycler.setLayoutManager(linearLayoutManager); //设置适配器 recyclerAdapter = new RecyclerAdapter(this, date); recyclerAdapter.OnItemClickLitener(new RecyclerAdapter.OnItemClickLitener() { @Override public void onItemClick(View view, int position) { Toast.makeText(MyTestRecyclerview.this, "" + position, Toast.LENGTH_SHORT).show(); } }); //设置item增加或者删除的动画 recycler.setItemAnimator(new DefaultItemAnimator()); //设置Item分割线 recycler.addItemDecoration(new DividerItemDecoration( this, DividerItemDecoration.VERTICAL_LIST)); recycler.setAdapter(recyclerAdapter); } private void init() { date = new ArrayList<Integer>(Arrays.asList(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher)); } } DividerItemDecoration: 网上找的 复制过来用的、 public class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{ android.R.attr.listDivider }; public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; private Drawable mDivider; private int mOrientation; public DividerItemDecoration(Context context, int orientation) { final TypedArray a = context.obtainStyledAttributes(ATTRS); mDivider = a.getDrawable(0); a.recycle(); setOrientation(orientation); } public void setOrientation(int orientation) { if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { throw new IllegalArgumentException("invalid orientation"); } mOrientation = orientation; } @Override public void onDraw(Canvas c, RecyclerView parent) { if (mOrientation == VERTICAL_LIST) { drawVertical(c, parent); } else { drawHorizontal(c, parent); } } public void drawVertical(Canvas c, RecyclerView parent) { final int left = parent.getPaddingLeft(); final int right = parent.getWidth() - parent.getPaddingRight(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext()); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child .getLayoutParams(); final int top = child.getBottom() + params.bottomMargin; final int bottom = top + mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } public void drawHorizontal(Canvas c, RecyclerView parent) { final int top = parent.getPaddingTop(); final int bottom = parent.getHeight() - parent.getPaddingBottom(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child .getLayoutParams(); final int left = child.getRight() + params.rightMargin; final int right = left + mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } @Override public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) { if (mOrientation == VERTICAL_LIST) { outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); } else { outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); } }
相关文章推荐
- java与mysql数据类型对应表
- 设计模式笔记--状态模式
- weblogic下调用CXF的webservice接口报错
- iosiOS安全(六)
- spring mvc web应用启动时就执行特定处理(线程启动)
- iOS 百度地图_自定义Annotation大头针_修改大头针图片
- oracle排序
- Hadoop-简单的MapReduce
- 51单片机的data,xdata,code区别详解
- Android5.0 材质设计(纸墨设计)中的z轴理念
- 在数组中添加一个元素 数组顺序依旧正常排序
- 手机游戏盈利
- MyEclipse + Maven开发Web工程的详细配置过程
- android四大组件---Activity
- UI--单行文本水平触摸滑动效果
- js获取select标签选中的值
- 【原】IOS中KVO模式的解析与应用
- AFNetworking
- js 获取当月天数
- Search Engine —— Regular Expression(Spider)