Android中使用列表画表格(可动态添加行数据)
来源:互联网 发布:北京外国语大学网络教 编辑:程序博客网 时间:2024/06/06 01:53
优点:
1.相同的行布局不用重复画
2.除了表头固定,其他的行可以动态添加,非常方便
此处举例,所用的是RecyclerView和LinearLayout的权重适配(不用自己再做适配)
效果图:
ReportDetailActivity.java是用于展示表格的Activity
public class ReportDetailActivity extends AppCompatActivity implements View.OnClickListener { private RecyclerView report_detail_recyclerview; private List<String> mList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_report_detail); initView(); } private void initView() { mList = new ArrayList<>(); mList.add("省亿元以上项目"); mList.add("合肥市“大新专”项目"); mList.add("市产业类投资项目"); mList.add("市大建设项目"); report_detail_recyclerview = (RecyclerView) findViewById(R.id.report_detail_recyclerview); report_detail_recyclerview.setLayoutManager(new LinearLayoutManager(this)); report_detail_recyclerview.setAdapter(new ReportDetailAdapter(this,mList)); }}
ReportDetailAdapter.java 是RecyclerView的适配器,有两个行布局
public class ReportDetailAdapter extends RecyclerView.Adapter { private List<String> list; private Context context; public ReportDetailAdapter(Context context, List<String> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 1) { return new OneViewHolder(View.inflate(context, R.layout.oneviewitem, null)); } else { return new TwoViewHolder(View.inflate(context, R.layout.twoviewitem, null)); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (getItemViewType(position) == 1) { OneViewHolder oneViewHolder = (OneViewHolder) holder; oneViewHolder.setData(position); } else { TwoViewHolder twoViewHolder = (TwoViewHolder) holder; twoViewHolder.setData(position); } } @Override public int getItemCount() { return list.size(); } @Override public int getItemViewType(int position) { if (position == 0) { return 1; } else { return 2; } } class OneViewHolder extends RecyclerView.ViewHolder { public OneViewHolder(View itemview) { super(itemview); } public void setData(int position) { ImageView imageView = (ImageView) itemView.findViewById(R.id.switch_img); } } private class TwoViewHolder extends RecyclerView.ViewHolder { private TextView unit_tv; private TextView projectnum_tv; private TextView yearplaninvest_tv; private TextView nowmonthinvest_tv; private TextView onetonowinvest_tv; private TextView Investmentcompletion_tv; private TextView investmentgrowth_tv; public TwoViewHolder(View itemView) { super(itemView); } public void setData(int position) { unit_tv = (TextView) itemView.findViewById(R.id.unit_tv); projectnum_tv = (TextView) itemView.findViewById(R.id.projectnum_tv); yearplaninvest_tv = (TextView) itemView.findViewById(R.id.yearplaninvest_tv); nowmonthinvest_tv = (TextView) itemView.findViewById(R.id.nowmonthinvest_tv); onetonowinvest_tv = (TextView) itemView.findViewById(R.id.onetonowinvest_tv); Investmentcompletion_tv = (TextView) itemView.findViewById(R.id.Investmentcompletion_tv); investmentgrowth_tv = (TextView) itemView.findViewById(R.id.investmentgrowth_tv); unit_tv.setText(list.get(position)); } }}
oneviewitem.xml
<?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:orientation="vertical" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="5dp"> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#BDBDBD"/> <LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:orientation="horizontal" > <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.2" android:gravity="center" android:text="单位"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="6.2" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <ImageView android:id="@+id/switch_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:adjustViewBounds="true" android:scaleType="center" android:src="@drawable/switch_bg"/> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="项目计划情况"/> </FrameLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#BDBDBD"/> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="项目数"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="年度计划投资"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="当月完成投资"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.2" android:gravity="center" android:text="1-当月累计完成投资"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="投资完成率"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="投资增长率"/> </LinearLayout> </LinearLayout> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#BDBDBD"/></LinearLayout>
twoviewitem.xml<?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:orientation="vertical" android:paddingLeft="5dp" android:paddingRight="5dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="65dp" android:orientation="horizontal"> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:id="@+id/unit_tv" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.2" android:gravity="center"/> <!--有1dp的偏差,需要纠正(应该是上面布局套的有点多导致下面的有点偏差),layout_marginLeft="1dp"--> <View android:layout_width="1dp" android:layout_marginLeft="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:id="@+id/projectnum_tv" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:id="@+id/yearplaninvest_tv" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:id="@+id/nowmonthinvest_tv" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:id="@+id/onetonowinvest_tv" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.2" android:gravity="center"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:id="@+id/Investmentcompletion_tv" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> <TextView android:id="@+id/investmentgrowth_tv" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#BDBDBD"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#BDBDBD"/></LinearLayout>
阅读全文
0 0
- Android中使用列表画表格(可动态添加行数据)
- ITOO---MVC3.0动态添加表格的行数并Controller中获取添加数据
- Asp.net利用Jquery动态添加表格的行数
- Android动态添加联系人列表
- Android 表格控件-动态实现表格效果(内容、样式可扩展)
- Android 表格控件-动态实现表格效果(内容、样式可扩展)
- Android中可展开的列表组件(ExpandableListView)的使用
- HTML动态生成指定行数和列数的可编辑表格
- 动态添加表格(一)
- Android中Spinner的使用及其详细总结(可实现下拉列表)
- 向表格中动态添加行
- 使用jquery和json动态添加表格
- html 使用js动态添加表格
- android动态画表格
- 可编辑的table. 添加数据,修改数据。稍加修改就可以部署到ajax 动态表格中
- 动态可编辑表格
- JavaScript实现动态添加页面的表格行数并获取数据
- 通过代码动态添加列表item实现列表(不使用listview列表)
- 《C++ Primer》读书笔记第2章:变量与基本类型
- 利用canal使Mysql缓冲Redis
- 三十一,iOS 11系统下tableView顶部多出一些留白的解决方法
- Android NuPlayer播放框架
- 记录几个常用shell命令和工具(待继续学习添加)
- Android中使用列表画表格(可动态添加行数据)
- Unity学习笔记
- awk笔记
- Android 7.0 行为变更 通过FileProvider在应用间共享文件
- [HDU 3949]XOR:线性基
- as中配置svn,上传代码到svn服务器
- 给初学者的RxJava2.0教程(一)
- node.js简单操作redis
- 译:Ruby小技巧:Each with object