Android中使用列表画表格(可动态添加行数据)

优点:
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>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值