版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/51880722
<strong><span style="font-size:24px;">数据准备:</span></strong>
[["颜色","序号","商机阶段","商机数量","商机转化率"],["1","胜芳","152,002","1223","22"],["2","B2B平台","8,775","22","323"],["3","峰闵","2,000","232","43242"],["4","扬宇","11","12312","232"]
]


自定义listview(保证在scroller中能展示,解决冲突)

public class ListViewInScroller extends ListView {public ListViewInScroller(Context context) {super(context);
   }public ListViewInScroller(Context context, AttributeSet attrs,
         int defStyleAttr) {super(context, attrs, defStyleAttr);
   }public ListViewInScroller(Context context, AttributeSet attrs) {super(context, attrs);
   }/**注释:解决只显示一行的问题 */
   @Override
   protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(   Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
      super.onMeasure(widthMeasureSpec, expandSpec);
   }
}

布局文件:

<?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="match_parent">
    <!-- 统计信息表格展示控件 -->
    <HorizontalScrollView
        android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:fillViewport="true"
        android:visibility="invisible">
        <com.xzjmyk.pm.activity.ui.erp.view.ListViewInScroller
                    android:id="@+id/lv_grid_dispaly"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:cacheColorHint="#00000000"
                    android:divider="@drawable/scanframeline" />
      
    </HorizontalScrollView>
</LinearLayout>

适配器类:

适配器的布局文件没有元素:

R.layout.list_item_empty
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ly_top_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
</LinearLayout>
public class HListViewAdapter extends BaseAdapter {private Context ct;
    private LayoutInflater inflater;
    private ArrayList<ArrayList<String>> lists;

    public HListViewAdapter(Context context, ArrayList<ArrayList<String>> lists) {super();
        this.lists = lists;
        this.ct = context;
        inflater = LayoutInflater.from(context);
    }@Override
    public int getCount() {return lists != null ? lists.size() : 0;
    }@Override
    public Object getItem(int arg0) {return arg0;
    }@Override
    public long getItemId(int arg0) {return arg0;
    }@SuppressWarnings("deprecation")@Override
    public View getView(int index, View view, ViewGroup arg2) {ArrayList<String> list = lists.get(index);
        TextView[] views = new TextView[list.size()];
        if (view == null) {view = inflater.inflate(R.layout.list_item_empty, null);
            LinearLayout topview = (LinearLayout) view.findViewById(R.id.ly_top_view);
            //根部布局
            LinearLayout ly_grid = new LinearLayout(ct);
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                    LayoutParams.MATCH_PARENT);
            ly_grid.setLayoutParams(lp);
            ly_grid.setOrientation(LinearLayout.HORIZONTAL);
            //水平线条
            View horizontal = new View(ct);
            ViewGroup.LayoutParams hp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    CommonUtil.dip2px(ct, 1));
            horizontal.setLayoutParams(hp);
            horizontal.setBackground(ct.getResources().getDrawable(R.drawable.filemanagermenubg_w));

            /**@注释:创建textview  */
            for (int i = 0; i < list.size(); i++) {//垂直线条
                View vertical = new View(ct);
                ViewGroup.LayoutParams vp = new ViewGroup.LayoutParams(CommonUtil.dip2px(ct, 1),
                        ViewGroup.LayoutParams.MATCH_PARENT);
                vertical.setLayoutParams(vp);
                vertical.setBackground(ct.getResources().getDrawable(R.drawable.domo_toolbar_bg));

                TextView tView = new TextView(ct);
                LinearLayout.LayoutParams tp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.MATCH_PARENT);
                if (i == 0) {tView.setWidth(CommonUtil.dip2px(ct, 55));

                } else {tView.setWidth(CommonUtil.dip2px(ct, 70));
                }tView.setMaxLines(8);
                //tView.setLines(1);
                //tView.setBackgroundColor(ct.getResources().getColor(R.color.red));
                tView.setLayoutParams(tp);
                tView.setGravity(Gravity.CENTER);

                tView.setPadding(CommonUtil.dip2px(ct, 10), CommonUtil.dip2px(ct, 10),
                        CommonUtil.dip2px(ct, 10), CommonUtil.dip2px(ct, 10));

                tView.setTextColor(ct.getResources().getColor(R.color.black));
                tView.setTextSize(CommonUtil.dip2px(ct, 8));
                views[i] = tView;

                //ly_grid.setGravity(Gravity.CENTER);
                ly_grid.addView(vertical);
                ly_grid.addView(tView);
            }topview.addView(ly_grid);
            topview.addView(horizontal);

            view.setTag(views);
        } else {views = (TextView[]) view.getTag();
        }view.setBackgroundColor(Color.WHITE);

        for (int i = 0; i < views.length; i++) {views[i].setText(list.get(i));
            views[i].setTextColor(ct.getResources().getColor(R.color.black));
        }if (index == 0) {//view.setBackgroundResource(R.color.head_bg);
        } else {if (index % 2 != 0) {view.setBackgroundColor(Color.argb(250, 255, 255, 255));
            } else {view.setBackgroundColor(Color.argb(250, 224, 243, 250));
            }}return view;
    }
}

Activity 核心代码:

@ViewInject(R.id.layout)
private HorizontalScrollView layout;
@ViewInject(R.id.lv_grid_dispaly)
private ListViewInScroller lv_grid_dispaly;
private HListViewAdapter hl_adapter;
private ArrayList<ArrayList<String>> gridlists = new ArrayList<ArrayList<String>>();
private String gridData = "[[\"颜色\",\"序号\",\"商机阶段\",\"商机数量\",\"商机转化率\"],[\"1\",\"胜芳\",\"152,002\",\"1223\",\"22\"],[\"2\",\"B2B平台\",\"8,775\",\"22\",\"323\"],[\"3\",\"峰闵\",\"2,000\",\"232\",\"43242\"],[\"4\",\"扬宇\",\"11\",\"12312\",\"232\"]]";
gridlists = (ArrayList) JSON.parseArray(gridData, ArrayList.class);
hl_adapter = new HListViewAdapter(this, gridlists);
lv_grid_dispaly.setAdapter(hl_adapter);

展示效果:

Android 表格HorizontalScrollView+ListView相关推荐

  1. Android 用HorizontalScrollView实现ListView的Item滑动删除

    原理: 利用HorizontalScrollView可以横向滚动的特点实现滑动,根据动态的设置要展示的区域宽度,使得其余选项操作被挤出屏幕外面,从而实现单条滑动菜单的样式. 实现步骤: 实现Listv ...

  2. Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突

    用HorizontalScrollView实现类似微信的滑动删除 测试于:Android2.2+ 对于Android来说按键操作已经在减少,越来越多的手势操作层出不穷,今天介绍一款LIstView的I ...

  3. Android 自定义ScrollView ListView 体验各种纵向滑动的需求

    1.概述 群里的一个哥们有个需求是这样的:问题:主要功能就是:1.循环的一个滑动:2.每次滑动结束,保持每个Item的完整.然后我当时给他写了个Demo,所有代码都在Activity里面,后期看来其太 ...

  4. Android中HorizontalScrollView的使用

         由于移动设备物理显示空间一般有限,不可能一次性的把所有要显示的内容都显示在屏幕上.所以各大平台一般会提供一些可滚动的视图来向用户展示数据.Android平台框架中为我们提供了诸如ListVi ...

  5. Android 自定义 HorizontalScrollView 横向滑动效果

    自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果.的确HorizontalScrollView可以实现Gal ...

  6. Android重绘ListView高度

    Android重绘ListView高度 经常会有这样需求,需要ListView默认将所有的条目显示出来,这就需要外层使用ScrollView,ScrollView里面放置一个重绘高度的ListView ...

  7. android 分组 listview,Android实现的ListView分组布局改进示例

    本文实例讲述了android实现的listview分组布局改进方法.分享给大家供大家参考,具体如下: 由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图: 然后是实现该listv ...

  8. android中设置ListView的选中的Item的背景颜色(附源码)

    http://longyi-java.iteye.com/blog/976067 ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了 ...

  9. [android] 练习使用ListView(一)

    练习使用ListView,BaseAdapter,先展示文字的,再练习图片的 MainActivity.java package com.android.test;import android.app ...

最新文章

  1. carthage update --no-use-binaries --platform mac,ios
  2. matlab相关的数字信号,数字信号处理及其MATLAB实现.ppt
  3. android 实现定时任务,Android 实现定时任务的过程详解
  4. 抽象类和接口类的区别
  5. ASP.NETCore编程实现基本认证
  6. python相同怎么写_这两个index相同的dataframe我想把他们merge,怎么写?
  7. uni app 录音结束监听_全新重构,uni-app实现微信端性能翻倍
  8. 使用 file_get_contents 获取网站信息报错failed to open stream: HTTP request failed!
  9. 数据库工作笔记003---在Centos中导入sql文件的方法
  10. java在线支付---05_在线支付_编写用于准备请求数据的Servlet
  11. Java判断Class变量是什么类型
  12. 2012年CIO最关心的十大安全问题
  13. ubuntu14.04 Nvidia 驱动和cuda安装(转)
  14. 0603封装 1%贴片电阻代码表示的阻值
  15. flash cs6汉化成中文,附汉化包
  16. ios版的chrome如何保存网页为PDF
  17. 误码率matlab,关于误码率的问题 急!!!!!
  18. 紫罗兰永恒花园女性CG模型作品
  19. u3d 镜面反射的效果
  20. 1000句英语经典口语

热门文章

  1. java 支付宝h5网页支付接口,移动端h5网页调用支付宝支付接口
  2. Oracle数据库基础入门《二》Oracle内存结构
  3. 大型运输行业实战_day14_1_webserivce简单入门
  4. 454. 4Sum II
  5. hicoder - 1068 【RMQ or 线段树】
  6. 关于vs生成app错误提示,提醒Execution failed for task ':transformClassesWithDexForDebug'.
  7. mysql数据库死锁 情景一
  8. 移动端滚动穿透问题完美解决方案
  9. 解决在Yii2中使用PHPExcel出现Class ‘app\controllers\PHPExcel‘ not found的问题
  10. [原创]关于javax.servlet.ServletException: File [/loginController/getVerifCode.jsp] not found异常 解决方案