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