Android ListView实现Table行列效果

转载 2012年03月29日 11:46:27

Android ListView实现Table行列效果

先来看运行效果:


就两个类,放上去运行就可以看到效果。

TableView.java
Java代码 复制代码 收藏代码
  1. package com.iaiai;   
  2.   
  3. import java.util.List;   
  4.   
  5. import android.content.Context;   
  6. import android.graphics.Canvas;   
  7. import android.graphics.Color;   
  8. import android.graphics.Paint;   
  9. import android.view.Gravity;   
  10. import android.view.View;   
  11. import android.view.ViewGroup;   
  12. import android.widget.AdapterView;   
  13. import android.widget.BaseAdapter;   
  14. import android.widget.LinearLayout;   
  15. import android.widget.ListView;   
  16. import android.widget.TextView;   
  17.   
  18. /**  
  19.  *   
  20.  * <p>  
  21.  * Title: MainActivity.java  
  22.  * </p>  
  23.  * <p>  
  24.  * E-Mail: 176291935@qq.com  
  25.  * </p>  
  26.  * <p>  
  27.  * QQ: 176291935  
  28.  * </p>  
  29.  * <p>  
  30.  * Http: iaiai.iteye.com  
  31.  * </p>  
  32.  * <p>  
  33.  * Create time: 2011-11-9  
  34.  * </p>  
  35.  *   
  36.  * @author 丸子  
  37.  * @version 0.0.1  
  38.  */  
  39. public class TableView extends LinearLayout {   
  40.   
  41.     private static LayoutParams FILL_FILL_LAYOUTPARAMS = new LayoutParams(   
  42.             LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1);   
  43.     private static LayoutParams WAP_WAP_LAYOUTPARAMS = new LayoutParams(   
  44.             LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);   
  45.   
  46.     private static Paint BLACK_PAINT = new Paint();   
  47.     private static Paint WHITE_PAINT = new Paint();   
  48.     static {   
  49.         WHITE_PAINT.setColor(Color.WHITE);   
  50.         BLACK_PAINT.setColor(Color.BLACK);   
  51.     }   
  52.   
  53.     private CAdapter cAdapter;   
  54.   
  55.     /** 标题空间. */  
  56.     private LinearLayout titleLayout;   
  57.     private String[] title;   
  58.   
  59.     private ListView listView;   
  60.     /** 数据. */  
  61.     private List<String[]> data;   
  62.   
  63.     /** 列宽数据. */  
  64.     private int[] itemWidth;   
  65.   
  66.     /** 当前选中行. */  
  67.     private int selectedPosition = -1;   
  68.     /** 自动列宽列. */  
  69.     private int autoWidthIndex = -1;   
  70.   
  71.     private AdapterView.OnItemClickListener onItemClickListener;   
  72.   
  73.     /** 行背景颜色. */  
  74.     private int[] rowsBackgroundColor;   
  75.     /** 选中行背景颜色. */  
  76.     private int selectedBackgroundColor = Color.argb(200224243250);   
  77.     /** 标题背景颜色. */  
  78.     private int titleBackgroundColor;   
  79.     /** 标题字体颜色. */  
  80.     private int titleTextColor = Color.argb(255100100100);   
  81.     /** 内容字体颜色. */  
  82.     private int contentTextColor = Color.argb(255100100100);   
  83.     /** 标题字体大小. */  
  84.     private float titleTextSize = 0;   
  85.     /** 内容字体大小. */  
  86.     private float contentTextSize = 0;   
  87.   
  88.     /**  
  89.      * 初始化带标题ListView  
  90.      *   
  91.      * @param context  
  92.      *            父级上下文  
  93.      * @param title  
  94.      *            标题数组  
  95.      * @param data  
  96.      *            内容列表  
  97.      */  
  98.     public TableView(Context context, String[] title, List<String[]> data) {   
  99.         super(context);   
  100.   
  101.         this.title = title;   
  102.         this.data = data;   
  103.   
  104.         // 设定纵向布局   
  105.         setOrientation(VERTICAL);   
  106.         // 设定背景为白色   
  107.         setBackgroundColor(Color.WHITE);   
  108.   
  109.         // 预先设定好每列的宽   
  110.         this.itemWidth = new int[title.length];   
  111.         autoWidthIndex = this.itemWidth.length - 1;   
  112.         // 计算列宽   
  113.         calcColumnWidth();   
  114.   
  115.         // 添加title位置   
  116.         titleLayout = new LinearLayout(getContext());   
  117.         titleLayout.setBackgroundColor(Color.parseColor("#CCCCCC"));   
  118.         addView(titleLayout);   
  119.         // 绘制标题面板   
  120.         drawTitleLayout();   
  121.   
  122.         // 添加listview   
  123.         listView = new ListView(getContext());   
  124.         listView.setPadding(0200);   
  125.         cAdapter = new CAdapter();   
  126.         listView.setAdapter(cAdapter);   
  127.         listView.setCacheColorHint(0);   
  128.         listView.setLayoutParams(FILL_FILL_LAYOUTPARAMS);   
  129.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {   
  130.   
  131.             @Override  
  132.             public void onItemClick(AdapterView<?> parent, View view,   
  133.                     int position, long id) {   
  134.                 if (onItemClickListener != null)   
  135.                     onItemClickListener.onItemClick(parent, view, position, id);   
  136.                 setSelectedPosition(position);   
  137.                 selectedPosition = position;   
  138.                 cAdapter.notifyDataSetChanged();   
  139.             }   
  140.         });   
  141.         addView(listView);   
  142.     }   
  143.   
  144.     /**  
  145.      * 整体有改变时,刷新显示  
  146.      */  
  147.     public void definedSetChanged() {   
  148.         calcColumnWidth();   
  149.         drawTitleLayout();   
  150.         cAdapter.notifyDataSetChanged();   
  151.     }   
  152.   
  153.     /**  
  154.      * 设置选中时的监听器  
  155.      *   
  156.      * @param onItemClickListener  
  157.      */  
  158.     public void setOnItemClickListener(   
  159.             AdapterView.OnItemClickListener onItemClickListener) {   
  160.         this.onItemClickListener = onItemClickListener;   
  161.     }   
  162.   
  163.     /**  
  164.      * 设置行背景颜色, 多个颜色可以作为间隔色  
  165.      *   
  166.      * @param color  
  167.      *            行背景颜色,可以为多个  
  168.      */  
  169.     public void setItemBackgroundColor(int... color) {   
  170.         rowsBackgroundColor = color;   
  171.     }   
  172.   
  173.     /**  
  174.      * 数据总数  
  175.      */  
  176.     public int getCount() {   
  177.         if (data == null)   
  178.             return 0;   
  179.         return data.size();   
  180.     }   
  181.   
  182.     /**  
  183.      * 当前选中数据  
  184.      *   
  185.      * @param position  
  186.      * @return  
  187.      */  
  188.     public String[] getItem(int position) {   
  189.         if (data == null)   
  190.             return null;   
  191.         return data.get(position);   
  192.     }   
  193.   
  194.     /**  
  195.      * 设置当前选中位置  
  196.      *   
  197.      * @return  
  198.      */  
  199.     public void setSelectedPosition(int selectedPosition) {   
  200.         this.selectedPosition = selectedPosition;   
  201.     }   
  202.   
  203.     /**  
  204.      * 当前选中位置  
  205.      *   
  206.      * @return  
  207.      */  
  208.     public int getSelectedPosition() {   
  209.         return selectedPosition;   
  210.     }   
  211.   
  212.     /**  
  213.      * 设置被选中时的背景色  
  214.      *   
  215.      * @param color  
  216.      */  
  217.     public void setSelectedBackgroundColor(int color) {   
  218.         selectedBackgroundColor = color;   
  219.     }   
  220.   
  221.     /**  
  222.      * 设置标题背景色.  
  223.      *   
  224.      * @param color  
  225.      */  
  226.     public void setTitleBackgroundColor(int color) {   
  227.         titleBackgroundColor = color;   
  228.         titleLayout.setBackgroundColor(titleBackgroundColor);   
  229.     }   
  230.   
  231.     /**  
  232.      * 设置标题文字颜色  
  233.      *   
  234.      * @param color  
  235.      */  
  236.     public void setTitleTextColor(int color) {   
  237.         titleTextColor = color;   
  238.         for (int i = 0; i < titleLayout.getChildCount(); i++) {   
  239.             ((TextView) titleLayout.getChildAt(i)).setTextColor(titleTextColor);   
  240.         }   
  241.     }   
  242.   
  243.     /**  
  244.      * 设置内容文字颜色  
  245.      *   
  246.      * @param color  
  247.      */  
  248.     public void setContentTextColor(int color) {   
  249.         contentTextColor = color;   
  250.     }   
  251.   
  252.     /**  
  253.      * 设置标题字体大小  
  254.      *   
  255.      * @param szie  
  256.      */  
  257.     public void setTitleTextSize(float szie) {   
  258.         titleTextSize = szie;   
  259.     }   
  260.   
  261.     /**  
  262.      * 设置内容字体大小  
  263.      *   
  264.      * @param szie  
  265.      */  
  266.     public void setContentTextSize(float szie) {   
  267.         contentTextSize = szie;   
  268.     }   
  269.   
  270.     /**  
  271.      *   
  272.      * 设定哪列自动列宽 从0开始计算  
  273.      *   
  274.      * @param index  
  275.      */  
  276.     public void setAutoColumnWidth(int index) {   
  277.         autoWidthIndex = index;   
  278.         for (int i = 0; i < titleLayout.getChildCount(); i++) {   
  279.             TextView tv = ((TextView) titleLayout.getChildAt(i));   
  280.             if (i == autoWidthIndex)   
  281.                 tv.setLayoutParams(FILL_FILL_LAYOUTPARAMS);   
  282.             else {   
  283.                 tv.setLayoutParams(WAP_WAP_LAYOUTPARAMS);   
  284.                 tv.setWidth(itemWidth[i]);   
  285.             }   
  286.         }   
  287.     }   
  288.   
  289.     /**  
  290.      * 绘制标题  
  291.      */  
  292.     private void drawTitleLayout() {   
  293.         titleLayout.removeAllViews();   
  294.         for (int i = 0; i < title.length; i++) {   
  295.             TextView tv = new CTextView(titleLayout.getContext());   
  296.             tv.setTextColor(titleTextColor);   
  297.             tv.setGravity(Gravity.CENTER);   
  298.             tv.setText(title[i]);   
  299.             if (titleTextSize > 0) {   
  300.                 tv.setTextSize(titleTextSize);   
  301.             }   
  302.             tv.setPadding(5050);   
  303.             if (i == autoWidthIndex)   
  304.                 tv.setLayoutParams(TableView.FILL_FILL_LAYOUTPARAMS);   
  305.             else {   
  306.                 tv.setWidth(itemWidth[i]);   
  307.             }   
  308.             titleLayout.addView(tv);   
  309.         }   
  310.     }   
  311.   
  312.     /**  
  313.      * 计算列宽  
  314.      *   
  315.      * @return 是否有改动  
  316.      */  
  317.     private boolean calcColumnWidth() {   
  318.         boolean result = false;   
  319.   
  320.         float textSize = new TextView(getContext()).getTextSize();   
  321.   
  322.         // 计算标题列宽   
  323.         for (int i = 0; i < itemWidth.length; i++) {   
  324.             int w = (int) TableView.GetPixelByText(   
  325.                     (titleTextSize > 0) ? titleTextSize : textSize, title[i]);   
  326.             if (itemWidth[i] < w) {   
  327.                 itemWidth[i] = w;   
  328.                 result = true;   
  329.             }   
  330.         }   
  331.   
  332.         // 计算内容列宽   
  333.         if (contentTextSize > 0) {   
  334.             textSize = contentTextSize;   
  335.         }   
  336.         for (int i = 0; i < data.size(); i++) {   
  337.             for (int j = 0; j < itemWidth.length && j < data.get(i).length; j++) {   
  338.                 int w = (int) TableView   
  339.                         .GetPixelByText(textSize, data.get(i)[j]);   
  340.                 if (itemWidth[j] < w) {   
  341.                     itemWidth[j] = w;   
  342.                     result = true;   
  343.                 }   
  344.             }   
  345.         }   
  346.         return result;   
  347.     }   
  348.   
  349.     /**  
  350.      * 计算字符串所占像素  
  351.      *   
  352.      * @param textSize  
  353.      *            字体大小  
  354.      * @param text  
  355.      *            字符串  
  356.      * @return 字符串所占像素  
  357.      */  
  358.     private static int GetPixelByText(float textSize, String text) {   
  359.         Paint mTextPaint = new Paint();   
  360.         mTextPaint.setTextSize(textSize); // 指定字体大小   
  361.         mTextPaint.setFakeBoldText(true); // 粗体   
  362.         mTextPaint.setAntiAlias(true); // 非锯齿效果   
  363.   
  364.         return (int) (mTextPaint.measureText(text) + textSize);   
  365.     }   
  366.   
  367.     /**  
  368.      * 主要用的Adapter  
  369.      *   
  370.      * @author Cdisk  
  371.      *   
  372.      */  
  373.     class CAdapter extends BaseAdapter {   
  374.   
  375.         /*  
  376.          * (non-Javadoc)  
  377.          *   
  378.          * @see android.widget.Adapter#getCount()  
  379.          */  
  380.         @Override  
  381.         public int getCount() {   
  382.             if (data == null)   
  383.                 return 0;   
  384.             return data.size();   
  385.         }   
  386.   
  387.         /*  
  388.          * (non-Javadoc)  
  389.          *   
  390.          * @see android.widget.Adapter#getItem(int)  
  391.          */  
  392.         @Override  
  393.         public Object getItem(int position) {   
  394.             if (data == null)   
  395.                 return null;   
  396.             return data.get(position);   
  397.         }   
  398.   
  399.         /*  
  400.          * (non-Javadoc)  
  401.          *   
  402.          * @see android.widget.Adapter#getItemId(int)  
  403.          */  
  404.         @Override  
  405.         public long getItemId(int position) {   
  406.             return 0;   
  407.         }   
  408.   
  409.         /*  
  410.          * (non-Javadoc)  
  411.          *   
  412.          * @see android.widget.Adapter#getView(int, android.view.View,  
  413.          * android.view.ViewGroup)  
  414.          */  
  415.         @Override  
  416.         public View getView(int position, View convertView, ViewGroup parent) {   
  417.   
  418.             // 初始化主layout   
  419.             LinearLayout contextLayout = new LinearLayout(   
  420.                     TableView.this.getContext());   
  421.   
  422.             String[] dataItem = data.get(position);   
  423.   
  424.             if (getSelectedPosition() == position) { // 为当前选中行   
  425.                 contextLayout.setBackgroundColor(selectedBackgroundColor);   
  426.             } else if (rowsBackgroundColor != null  
  427.                     && rowsBackgroundColor.length > 0) {   
  428.                 contextLayout.setBackgroundColor(rowsBackgroundColor[position   
  429.                         % rowsBackgroundColor.length]);   
  430.             }   
  431.   
  432.             for (int i = 0; i < title.length; i++) {   
  433.                 TextView tv = new CTextView(contextLayout.getContext());   
  434.                 tv.setTextColor(contentTextColor);   
  435.                 tv.setGravity(Gravity.CENTER);   
  436.                 if (i < dataItem.length) {   
  437.                     tv.setText(dataItem[i]);   
  438.                 }   
  439.                 if (i == autoWidthIndex)   
  440.                     tv.setLayoutParams(TableView.FILL_FILL_LAYOUTPARAMS);   
  441.                 else {   
  442.                     tv.setWidth(itemWidth[i]);   
  443.                 }   
  444.                 if (contentTextSize > 0) {   
  445.                     tv.setTextSize(contentTextSize);   
  446.                 }   
  447.                 contextLayout.addView(tv);   
  448.             }   
  449.   
  450.             return contextLayout;   
  451.         }   
  452.   
  453.     }   
  454.   
  455.     /**  
  456.      * 重写的TextView  
  457.      *   
  458.      * @author Cdisk  
  459.      */  
  460.     class CTextView extends TextView {   
  461.   
  462.         @Override  
  463.         protected void onDraw(Canvas canvas) {   
  464.             super.onDraw(canvas);   
  465.             // Top   
  466.             canvas.drawLine(00this.getWidth() - 10, WHITE_PAINT);   
  467.             // Left   
  468.             canvas.drawLine(000this.getHeight() - 1, WHITE_PAINT);   
  469.             // Right   
  470.             canvas.drawLine(this.getWidth() - 10this.getWidth() - 1,   
  471.                     this.getHeight() - 1, BLACK_PAINT);   
  472.             // Buttom   
  473.             canvas.drawLine(0this.getHeight() - 1this.getWidth() - 1,   
  474.                     this.getHeight() - 1, BLACK_PAINT);   
  475.         }   
  476.   
  477.         public CTextView(Context context) {   
  478.             super(context);   
  479.         }   
  480.     }   
  481.   
  482. }  


MainActivity.java
Java代码 复制代码 收藏代码
  1. package com.iaiai;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.List;   
  5.   
  6. import android.app.Activity;   
  7. import android.graphics.Color;   
  8. import android.os.Bundle;   
  9. import android.view.Menu;   
  10. import android.view.MenuItem;   
  11. import android.view.View;   
  12. import android.widget.AdapterView;   
  13.   
  14. /**  
  15.  *   
  16.  * <p>  
  17.  * Title: MainActivity.java  
  18.  * </p>  
  19.  * <p>  
  20.  * E-Mail: 176291935@qq.com  
  21.  * </p>  
  22.  * <p>  
  23.  * QQ: 176291935  
  24.  * </p>  
  25.  * <p>  
  26.  * Http: iaiai.iteye.com  
  27.  * </p>  
  28.  * <p>  
  29.  * Create time: 2011-11-9  
  30.  * </p>  
  31.  *   
  32.  * @author 丸子  
  33.  * @version 0.0.1  
  34.  */  
  35. public class MainActivity extends Activity {   
  36.   
  37.     TableView listView;   
  38.     List<String[]> list = new ArrayList<String[]>();   
  39.   
  40.     @Override  
  41.     public void onCreate(Bundle savedInstanceState) {   
  42.         super.onCreate(savedInstanceState);   
  43.   
  44.         makeData();   
  45.   
  46.         String[] title = new String[] { "ID""标题2""标题3""标题4""标题5" };   
  47.   
  48.         listView = new TableView(this, title, list);   
  49.         listView.setTitleTextColor(Color.GREEN);   
  50.         listView.setTitleBackgroundColor(Color.RED);   
  51.         // listView.setAutoColumnWidth(3);   
  52.         // listView.setItemBackgroundColor(Color.GREEN, Color.WHITE);   
  53.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {   
  54.   
  55.             @Override  
  56.             public void onItemClick(AdapterView<?> parent, View view,   
  57.                     int position, long id) {   
  58.                 String[] item = listView.getItem(position);   
  59.                 item[2] = "12312312312";   
  60.                 listView.definedSetChanged();   
  61.             }   
  62.         });   
  63.   
  64.         // listView.definedSetChanged();   
  65.   
  66.         setContentView(listView);   
  67.     }   
  68.   
  69.     /*  
  70.      * (non-Javadoc)  
  71.      *   
  72.      * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)  
  73.      */  
  74.     @Override  
  75.     public boolean onCreateOptionsMenu(Menu menu) {   
  76.         menu.add(000"测试修改选中行");   
  77.         return true;   
  78.     }   
  79.   
  80.     /*  
  81.      * (non-Javadoc)  
  82.      *   
  83.      * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)  
  84.      */  
  85.     @Override  
  86.     public boolean onOptionsItemSelected(MenuItem item) {   
  87.         switch (item.getItemId()) {   
  88.         case 0:   
  89.             listView.setSelectedPosition(32);   
  90.             break;   
  91.         }   
  92.         return true;   
  93.     }   
  94.   
  95.     private void makeData() {   
  96.         list.add(new String[] { "1""数据1.2""数据1.3""数据1.4" });   
  97.         list.add(new String[] { "2""数据2.2""数据2.3""数据2.4""数据2.5" });   
  98.         list.add(new String[] { "3""数据3.2""数据3.3""数据3.4" });   
  99.         list.add(new String[] { "4""数据4.2""数据4.3""数据4.4" });   
  100.         list.add(new String[] { "5""数据5.2""数据5.3""数据5.4""数据5.5" });   
  101.         list.add(new String[] { "6""数据6.2""数据6.3""数据6.4" });   
  102.         list.add(new String[] { "7""数据7.2""数据7.3""数据7.4""数据7.5",   
  103.                 "数据7.6" });   
  104.         list.add(new String[] { "8""数据8.2""数据8.3""数据8.4" });   
  105.         list.add(new String[] { "9""数据9.2""数据9.3""数据9.4" });   
  106.         list.add(new String[] { "10""数据10.2""数据10.3""数据10.4""数据10.5",   
  107.                 "数据10.6""数据10.7" });   
  108.         list.add(new String[] { "11""数据11.2""数据11.3""数据11.4""数据11.5" });   
  109.         list.add(new String[] { "12""数据12.2""数据12.3""数据12.4""数据12.5" });   
  110.         list.add(new String[] { "13""数据13.2""数据13.3""数据13.4""数据13.5" });   
  111.         list.add(new String[] { "14""数据14.2""数据14.3""数据14.4""数据14.5" });   
  112.         list.add(new String[] { "15""数据15.2""数据15.3""数据15.4""数据15.5" });   
  113.         list.add(new String[] { "16""数据16.2""数据16.3""数据16.4""数据16.5" });   
  114.         list.add(new String[] { "17""数据17.2""数据17.3""数据17.4""数据17.5" });   
  115.         list.add(new String[] { "18""数据18.2""数据18.3""数据18.4""数据18.5" });   
  116.         list.add(new String[] { "19""数据19.2""数据19.3""数据19.4""数据19.5" });   
  117.         list.add(new String[] { "20""数据20.2""数据20.3""数据20.4""数据20.5" });   
  118.         list.add(new String[] { "21""数据21.2""数据21.3""数据21.4""数据21.5" });   
  119.         list.add(new String[] { "22""数据22.2""数据22.3""数据22.4""数据22.5" });   
  120.         list.add(new String[] { "23""数据23.2""数据23.3""数据23.4""数据23.5" });   
  121.         list.add(new String[] { "24""数据24.2""数据24.3""数据24.4""数据24.5" });   
  122.         list.add(new String[] { "25""数据25.2""数据25.3""数据25.4""数据25.5" });   
  123.         list.add(new String[] { "26""数据26.2" });   
  124.         list.add(new String[] { "27""数据27.2""数据27.3""数据27.4""数据27.5" });   
  125.         list.add(new String[] { "28""数据28.2""数据28.3""数据28.4""数据28.5" });   
  126.         list.add(new String[] { "29""数据29.2""数据29.3""数据29.4""数据29.5" });   
  127.         list.add(new String[] { "30""数据12.2""数据12.3""数据12.4""数据12.5" });   
  128.         list.add(new String[] { "31""数据13.2""数据13.3""数据13.4""数据13.5" });   
  129.         list.add(new String[] { "32""数据14.2""数据14.3""数据14.4""数据14.5" });   
  130.         list.add(new String[] { "33""数据15.2""数据15.3""数据15.4""数据15.5" });   
  131.         list.add(new String[] { "34""数据16.2""数据16.3""数据16.4""数据16.5" });   
  132.         list.add(new String[] { "35""数据17.2""数据17.3""数据17.4""数据17.5" });   
  133.         list.add(new String[] { "36""数据18.2""数据18.3" });   
  134.         list.add(new String[] { "37""数据19.2""数据19.3""数据19.4""数据19.5" });   
  135.         list.add(new String[] { "38""数据20.2""数据20.3""数据20.4""数据20.5" });   
  136.         list.add(new String[] { "39""数据21.2""数据21.3""数据21.4""数据21.5" });   
  137.         list.add(new String[] { "40""数据22.2""数据22.3""数据22.4""数据22.5" });   
  138.         list.add(new String[] { "41""数据23.2""数据23.3""数据23.4""数据23.5" });   
  139.         list.add(new String[] { "42""数据24.2""数据24.3""数据24.4""数据24.5" });   
  140.         list.add(new String[] { "43""数据25.2""数据25.3""数据25.4""数据25.5" });   
  141.         list.add(new String[] { "44""数据26.2""数据26.3""数据26.4""数据26.5" });   
  142.         list.add(new String[] { "45""数据27.2""数据27.3""数据27.4""数据27.5" });   
  143.         list.add(new String[] { "46""数据28.2""数据28.3""数据28.4""数据28.5" });   
  144.         list.add(new String[] { "47""数据29.2""数据29.3""数据29.4""数据29.5" });   
  145.     }   
  146.   
  147. }  



我把整个功能写成了一个类,在需要用的时候只需要new出这个类就可以直接使用了
该类目前的所有方法:
Java代码 复制代码 收藏代码
  1. /** 初始化带标题ListView. */  
  2. CListView(Context, String[], List<String[]>)   
  3. /** 整体有改变时,刷新显示. */  
  4. definedSetChanged()   
  5. /** 设置选中时的监听器. */  
  6. setOnItemClickListener(OnItemClickListener)   
  7. /** 设置行背景颜色, 多个颜色可以作为间隔色. */  
  8. setItemBackgroundColor(int...)   
  9. /** 数据总数. */  
  10. getCount()   
  11. /** 当前选中数据. */  
  12. getItem(int)   
  13. /** 设置当前选中位置. */  
  14. setSelectedPosition(int)   
  15. /** 当前选中位置. */  
  16. getSelectedPosition()   
  17. /** 设置被选中时的背景色. */  
  18. setSelectedBackgroundColor(int)   
  19. /** 设置标题背景色. */  
  20. setTitleBackgroundColor(int)   
  21. /** 设置标题文字颜色. */  
  22. setTitleTextColor(int)   
  23. /** 设置内容文字颜色. */  
  24. setContentTextColor(int)   
  25. /** 设置标题字体大小. */  
  26. setTitleTextSize(float)   
  27. /** 设置内容字体大小. */  
  28. setContentTextSize(float)   
  29. /** 设定哪列自动列宽 从0开始计算. */  
  30. setAutoColumnWidth(int)  

TableView和ListView的使用

在游戏中,我们经常看到一些用来展示好友的列表或者展示一些道具的列表,如下图: 在这里,我们就来学学这种控件列表是如何使用的。 1.TableView...

android 自定义通用表格类TableView

最近做项目,用到了表格来展示数据的问题,一开始想到de

RecycleView及RecycleView Adapter

BB:虽然这个出来很久了,但是很惭愧还没有在真正的项目中使用到。不过话说过来android N都出来了,大部分android手机系统还是4.x,在此只能呵呵,好了bb完了。 recycle...

超炫button按钮动画效果

今天从网上看到一个这样的效果,感觉很有创意,自己也搜集了一些资料,仿照着实现了一下。    下面就直接上源码:     首先看一下布局文件:               and...

android 怎么给listview添加一个固定表头以及显示像table的效果

定义一个样式一条线             1dp         fill_parent         #dadada     1.为表头新建一个layout:a_item.x...

ListView嵌套GridView 并实现行列选择

  • 2015年07月11日 10:24
  • 2.49MB
  • 下载

ListView+GridView实现行列不确定的表格

ListView+GridView实现行列不确定的表格 请尊重个人劳动成果,转载注明出处,谢谢! http://blog.csdn.net/xiaxiazaizai01 第一次写博客,内心还...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android ListView实现Table行列效果
举报原因:
原因补充:

(最多只允许输入30个字)