Android使用RecyclerView绘制表格
2016-12-08 15:35
666 查看
一、效果图
二、创建步骤:
思路:其实就是将MainActivity中写好表头布局,同时和RecyclerView的Item布局保持一致,这里面列之间使用View进行分割,边框使用layer-list和shape实现。1:MainActivity代码:
public class MainActivity extends AppCompatActivity { private RecyclerView rv_sheet; private List<entity> list; private SheetAdapter sheetAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //数据,一般从后台通过网络请求到 list = new ArrayList<entity>(); for (int i = 0; i < 30; i++) { list.add(new entity("Wade", "James", "Kobe")); } rv_sheet = (RecyclerView) findViewById(R.id.rv_sheet); //设置线性布局 Creates a vertical LinearLayoutManager rv_sheet.setLayoutManager(new LinearLayoutManager(this)); //设置recyclerView每个item间的分割线 rv_sheet.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST)); //创建recyclerView的实例,并将数据传输到适配器 sheetAdapter = new SheetAdapter(list); rv_sheet.setAdapter(sheetAdapter); } }
2、MainActivity布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:orientation="vertical" tools:context=".MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:gravity="center" android:paddingBottom="10dp" android:paddingTop="10dp" android:singleLine="true" android:text="表头1" android:textColor="#000000" android:textSize="15sp" /> <View android:layout_width="1.5dp" android:layout_height="match_parent" android:background="#000000" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:paddingBottom="10dp" android:paddingTop="10dp" android:singleLine="true" android:text="表头2" android:textColor="#000000" android:textSize="15sp" /> <View android:layout_width="1.5dp" android:layout_height="match_parent" android:background="#000000" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:paddingBottom="10dp" android:paddingTop="10dip" android:singleLine="true" android:text="表头3" android:textColor="#000000" android:textSize="15sp" /> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv_sheet" android:name="com.example.wjm19.sheetdemo" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout>
3、RecyclerView适配器代码
/** * Created by wjm on 2016/12/6. */ public class SheetAdapter extends RecyclerView.Adapter { private List<entity> list; public SheetAdapter(List<entity> list) { this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getCon b555 text()) .inflate(R.layout.sheet_item_layout, parent, false); return new sheetViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { sheetViewHolder vh = (sheetViewHolder) holder; vh.getTv_sheetRow1().setText(list.get(position).getSheetRow1()); vh.getTv_sheetRow2().setText(list.get(position).getSheetRow2()); vh.getTv_sheetRow3().setText(list.get(position).getSheetRow3()); } @Override public int getItemCount() { return list.size(); } public class sheetViewHolder extends RecyclerView.ViewHolder{ public final View mView; public final TextView tv_sheetRow1; public final TextView tv_sheetRow2; public final TextView tv_sheetRow3; public sheetViewHolder(View itemView) { super(itemView); mView = itemView; tv_sheetRow1 = (TextView) itemView.findViewById(R.id.tv_sheetRow1); tv_sheetRow2 = (TextView) itemView.findViewById(R.id.tv_sheetRow2); tv_sheetRow3 = (TextView) itemView.findViewById(R.id.tv_sheetRow3); } public TextView getTv_sheetRow1() { return tv_sheetRow1; } public TextView getTv_sheetRow2() { return tv_sheetRow2; } public TextView getTv_sheetRow3() { return tv_sheetRow3; } } }
4、RecyclerView 中的Item布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border"> <TextView android:id="@+id/tv_sheetRow1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:gravity="center" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="第一列" android:textColor="#000000" android:textSize="15sp" /> <View android:layout_width="1.5dp" android:layout_height="match_parent" android:background="#000000" /> <TextView android:id="@+id/tv_sheetRow2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="第二列" android:textColor="#000000" android:textSize="15sp" /> <View android:layout_width="1.5dp" android:layout_height="match_parent" android:background="#000000" /> <TextView android:id="@+id/tv_sheetRow3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:paddingBottom="10dp" android:paddingTop="10dip" android:text="第三列" android:textColor="#000000" android:textSize="15sp" /> </LinearLayout>
5、实体类
/** * 实体类 * Created by wjm on 2016/12/7. */ public class entity { //第一列表头 private String sheetRow1; //第二列表头 private String sheetRow2; //第三列表头 private String sheetRow3; public entity(String sheetRow1, String sheetRow2, String sheetRow3) { this.sheetRow1 = sheetRow1; this.sheetRow2 = sheetRow2; this.sheetRow3 = sheetRow3; } public String getSheetRow1() { return sheetRow1; } public void setSheetRow1(String sheetRow1) { this.sheetRow1 = sheetRow1; } public String getSheetRow2() { return sheetRow2; } public void setSheetRow2(String sheetRow2) { this.sheetRow2 = sheetRow2; } public String getSheetRow3() { return sheetRow3; } public void setSheetRow3(String sheetRow3) { this.sheetRow3 = sheetRow3; } }
代码都非常简单,对recyclerView稍微熟一点的应该很容易看懂。
源码地址:sheetDemo
相关文章推荐
- Android 节操视频播放器jiecaovideoplayer使用
- Android 如何读取本地图片或者资源图片并自定义大小
- Android 抓包之Fiddler的使用
- Android课堂笔记——LinearLayout和RelativeLayout常用的两种布局方式
- Android 标题背景渐变
- android - TextView px和sp转换,以及getTextSize和setTextSize单位
- Android Studio的SVN Performing VCS Refresh/Commit 长时间不结束
- android打开系统相机分别获得原图和缩略图
- Android开发者选项-GPU显示配置文件无效
- android - RelativeLayout无法填充ScrollView
- android实现综合布局
- Android内核源码级调试环境搭建
- android底层驱动学习之调试驱动DEVICE_ATTR的原理及用法
- Android selector中的属性浅析
- Android service 简单介绍
- android 整理时间格式
- Android特效专辑(一)——水波纹过渡特效(首页)
- Android6.0启动-SystemServer
- 严格模式与内存泄漏,你必须知道的一切
- Android NDK资源汇总