`
hualikejava
  • 浏览: 171901 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android listview以html的网格显示

阅读更多

listview显示数据,类似HTML那样的table显示。显示不足的时候,横屏可以拖拉。


Activity 包括数据

package com.jdjw.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ListView;
import com.jdjw.test.TableAdapter.TableCell;
import com.jdjw.test.TableAdapter.TableRow;
public class TestGridViewTableActivity extends Activity
{
 private ListView lvSaleNum;
 private List<TableRow> table;
 private Context mContext;
 @Override
 protected void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.test_gridview_table);
  lvSaleNum = (ListView)findViewById(R.id.lv_salesNum);
  mContext = this;
  data();
 }
 private void data(){  
  salesNum s1 = new salesNum("星期一",50,60,R.drawable.a0,60,80,R.drawable.a1);
  salesNum s2 = new salesNum("星期二",50,60,R.drawable.a0,10,80,R.drawable.a0);
  salesNum s3 = new salesNum("星期三",120,30,R.drawable.a1,30,80,R.drawable.a0);
  salesNum s4 = new salesNum("星期四",50,50,R.drawable.a0,80,80,R.drawable.a1);
  salesNum s5 = new salesNum("星期五",10,20,R.drawable.a0,62,60,R.drawable.a0);
  salesNum s6 = new salesNum("星期六",80,10,R.drawable.a1,90,80,R.drawable.a0);
  salesNum s7 = new salesNum("星期日",50,90,R.drawable.a0,50,30,R.drawable.a0);
  List<salesNum> data = new ArrayList<salesNum>();
  data.add(s1);
  data.add(s2);
  data.add(s3);
  data.add(s4);
  data.add(s5);
  data.add(s6);
  data.add(s7);
  
  
  int width = getWindowManager().getDefaultDisplay().getWidth()/7;
  table = new ArrayList<TableRow>();
  
  
  int height=30;//LayoutParams.FILL_PARENT;
  
  
  TableCell[] titleCells = new TableCell[7];
  List<TableCell> titleList = new ArrayList<TableCell>();
  
  TableCell title1 = new TableCell("时间",width + 8 ,height, TableCell.TEXT);//第一格
  titleList.add(title1);
  TableCell title2 = new TableCell("上月条码数",width + 8 ,height, TableCell.TEXT);//第一格
  titleList.add(title2);
  TableCell title3 = new TableCell("本月条码数",width + 8 ,height, TableCell.TEXT);//第一格
  titleList.add(title3);
  TableCell title4 = new TableCell("条码趋势",width + 8 ,height, TableCell.TEXT);//第一格
  titleList.add(title4);
  TableCell title5 = new TableCell("上月销售金额",width + 8 ,height, TableCell.TEXT);//第一格
  titleList.add(title5);
  TableCell title6 = new TableCell("本月销售金额",width + 8 ,height, TableCell.TEXT);//第一格
  titleList.add(title6);
  TableCell title7 = new TableCell("销售金额趋势",width + 8 ,height, TableCell.TEXT);//第一格
  titleList.add(title7);
  table.add(new TableRow(titleList.toArray(titleCells)));
  
  for(int i=0;i<data.size();i++){
   salesNum sales = data.get(i);
   TableCell[] cells = new TableCell[7];
   List<TableCell> cellsList = new ArrayList<TableCell>();
   TableCell cell1 = new TableCell(sales.getWeek(),width + 8 ,height, TableCell.TEXT);//第1格
   cellsList.add(cell1);
   TableCell cell2 = new TableCell(sales.getBackMonthNum(),width + 8 ,height, TableCell.TEXT);//第2格
   cellsList.add(cell2);
   TableCell cell3 = new TableCell(sales.getNextMonthNum(),width + 8 ,height, TableCell.TEXT);//第3格
   cellsList.add(cell3);
   TableCell cell4 = new TableCell(sales.getNumImage(),width + 8 ,height, TableCell.IMAGE);//第4格
   cellsList.add(cell4);
   TableCell cell5 = new TableCell(sales.getBackMonthMomey(),width + 8,height, TableCell.TEXT);
   cellsList.add(cell5);
   TableCell cell6 = new TableCell(sales.getNextMonthMomey(),width + 8 ,height, TableCell.TEXT);
   cellsList.add(cell6);
   TableCell cell7 = new TableCell(sales.getMomeyImage(),width + 8 ,height, TableCell.IMAGE);
   cellsList.add(cell7);
   table.add(new TableRow(cellsList.toArray(cells)));
  }

  //设置适配器
  TableAdapter adapter = new TableAdapter(mContext,table);
  lvSaleNum.setAdapter(adapter);
 }
 
 
 class salesNum{
  private String week;
  private int backMonthNum;
  private int nextMonthNum;
  private int numImage;
  private int backMonthMomey;
  private int nextMonthMomey;
  private int momeyImage;
  public salesNum(){}
  public salesNum(String week,int backMonthNum,int nextMonthNum,int numImage,int backMonthMomey,int nextMonthMomey,int momeyImage){
   this.week = week;
   this.backMonthNum = backMonthNum;
   this.nextMonthNum = nextMonthNum;
   this.numImage = numImage;
   this.backMonthMomey = backMonthMomey;
   this.nextMonthMomey = nextMonthMomey;
   this.momeyImage = momeyImage;
   
  }
  public String getWeek()
  {
   return week;
  }
  public void setWeek(String week)
  {
   this.week = week;
  }
  public int getBackMonthNum()
  {
   return backMonthNum;
  }
  public void setBackMonthNum(int backMonthNum)
  {
   this.backMonthNum = backMonthNum;
  }
  public int getNextMonthNum()
  {
   return nextMonthNum;
  }
  public void setNextMonthNum(int nextMonthNum)
  {
   this.nextMonthNum = nextMonthNum;
  }
  public int getNumImage()
  {
   return numImage;
  }
  public void setNumImage(int numImage)
  {
   this.numImage = numImage;
  }
  public int getBackMonthMomey()
  {
   return backMonthMomey;
  }
  public void setBackMonthMomey(int backMonthMomey)
  {
   this.backMonthMomey = backMonthMomey;
  }
  public int getNextMonthMomey()
  {
   return nextMonthMomey;
  }
  public void setNextMonthMomey(int nextMonthMomey)
  {
   this.nextMonthMomey = nextMonthMomey;
  }
  public int getMomeyImage()
  {
   return momeyImage;
  }
  public void setMomeyImage(int momeyImage)
  {
   this.momeyImage = momeyImage;
  }
  
 }
}

适配器
package com.jdjw.test;

import java.util.List;

import android.content.Context;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * ListView自适应实现Table的类TableAdapter.java代码如下:
 * 
 * PS:TableCell是格单元的类,TableRow是表格行的类,TableRowView是实现表格行的组件。 实现步骤:TableCell -->
 * TableRow(TableRowView)-->ListView
 * 
 * 
 */
public class TableAdapter extends BaseAdapter
{
 private Context context;
 private List<TableRow> table; // 7行7列

 public TableAdapter(Context context, List<TableRow> table)
 {
  this.context = context;
  this.table = table;
 }

 @Override
 public int getCount()
 {
  return table.size();
 }

 @Override
 public long getItemId(int position)
 {
  return position;
 }

 public TableRow getItem(int position)
 {
  return table.get(position);
 }

 int i = 0;

 public View getView(int position, View convertView, ViewGroup parent)
 {
  TableRow tableRow = null;
  tableRow = table.get(position);// 得到行
  TableRowView view;
  if (convertView == null)
  {
   view = new TableRowView(this.context, tableRow);
   convertView = view;
  }
  return convertView;
 }

 /**
  * TableRowView 实现表格行的样式
  * 
  * @author hellogv
  */
 class TableRowView extends LinearLayout
 {
  public TableRowView(Context context, TableRow tableRow)
  {
   super(context);
   this.setOrientation(LinearLayout.HORIZONTAL);
   for (int i = 0; i < tableRow.getSize(); i++)
   {// 逐个格单元添加到行
    TableCell tableCell = tableRow.getCellValue(i);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
      tableCell.width, tableCell.height);// 按照格单元指定的大小设置空间
    layoutParams.setMargins(0, 0, 1, 1);// 预留空隙制造边框
    if (tableCell.type == TableCell.TEXT)
    {// 如果格单元是文本内容
     TextView textCell = new TextView(context);
     textCell.setLines(1);
     textCell.setGravity(Gravity.CENTER);
     // textCell.setBackgroundColor(Color.BLACK);//背景黑色
     textCell.setText(String.valueOf(tableCell.value));
     addView(textCell, layoutParams);
    }
    else if (tableCell.type == TableCell.IMAGE)
    {// 如果格单元是图像内容
     ImageView imgCell = new ImageView(context);
     // imgCell.setBackgroundColor(Color.BLACK);//背景黑色
     imgCell.setImageResource((Integer) tableCell.value);
     addView(imgCell, layoutParams);
    }
   }
   // this.setBackgroundColor(Color.WHITE);//背景白色,利用空隙来实现边框
  }
 }

 /**
  * TableRow 实现表格的行
  * 
  * @author hellogv
  */
 static public class TableRow
 {
  private TableCell[] cell;

  public TableRow(TableCell[] cell)
  {
   this.cell = cell;
  }

  public int getSize()
  {
   return cell.length;
  }

  public TableCell getCellValue(int index)
  {
   if (index >= cell.length)
    return null;
   return cell[index];
  }
 }

 /**
  * TableCell 实现表格的格单元
  * 
  * @author hellogv
  */
 static public class TableCell
 {
  static public final int TEXT = 0;
  static public final int IMAGE = 1;
  public Object value;
  public int width;
  public int height;
  private int type;

  public TableCell(Object value, int width, int height, int type)
  {
   this.value = value;
   this.width = width;
   this.height = height;
   this.type = type;
  }
 }
}

 

 

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="match_parent"
    android:orientation="vertical" >
<!-- 添加横向滑动 设置fillviewport为truey意思是否将HorizontalScrollView的内容宽度拉伸以适应视口-->
 <HorizontalScrollView 
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"  
 android:fillViewport="true"    
     >
<ListView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/lv_salesNum"
   
     />
    </HorizontalScrollView>
</LinearLayout>

 

  • 大小: 24.4 KB
分享到:
评论

相关推荐

    Android控件大全以及各布局空间的使用方式

    Android控件是构成用户界面的基础元素,包括按钮(Button)、文本输入框(EditText)、单选按钮(RadioButton)、复选框(CheckBox)、图片(ImageButton)、进度条(ProgressBar)、列表视图(ListView)、网格视图(GridView)、...

    图片列表RecyclerView+ListView+WebView+JzvdStd/JZPlayer+Jsoup+Glide

    在Android开发中,标题"图片列表RecyclerView+ListView+WebView+JzvdStd/JZPlayer+Jsoup+Glide"所提及的技术栈是构建一个功能丰富的移动应用的关键组件。以下是这些技术的具体介绍和它们如何协同工作的详细说明: 1...

    疯狂Android控件集合

    8. **网格视图(GridView)**:类似ListView,但每个项目占据固定大小的网格,适合展示多列数据。 9. **日期/时间选择器(DatePicker/TimePicker)**:提供用户选择日期和时间的界面,常用于设置提醒或预约等场景。 10...

    ListView、gridView、scollView、WebView下拉刷新

    GridView与ListView类似,只是它可以显示二维网格数据。实现下拉刷新的步骤与ListView相同,同样是利用SwipeRefreshLayout包裹GridView,并设置对应的刷新监听器。不过,由于GridView的布局特性,可能需要对布局...

    android 布局精解doc

    Grid View类似ListView,但显示为网格形式,每个单元格可以包含一个View。通过`android:numColumns`属性设置列数。 7. **绝对布局(AbsoluteLayout)** 绝对布局允许开发者精确控制每个子View的坐标,但并不推荐...

    Android基础系列之布局和控件

    8. **网格视图(GridView)**:类似列表视图,但以网格形式显示。 9. **滑动选择器(SeekBar)**:允许用户通过滑动来选择一个值。 10. **日期/时间选择器(DatePicker/TimePicker)**:让用户选择日期或时间。 ...

    android的布局文件介绍

    本篇文章将详细讲解Android的几种布局方式,包括线性布局、相对布局、表格布局、网格视图、标签布局、列表视图以及已废弃的绝对布局。 1. **线性布局(Linear Layout)** 线性布局是最基础的布局方式,它可以按照...

    Android_布局详解【图文】

    本篇将详细讲解Android中的五种主要布局:线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格布局(GridView)以及列表布局(ListView)。 1. **线性布局(Linear Layout)*...

    Android常用基础合集

    以下将详细解析标题"Android常用基础合集"所涵盖的知识点,并结合描述中提到的ImageView、ListView、GridView、RecyclerView以及WebView进行深入讲解。 1. **ImageView**: - **基本功能**:显示图片资源,可以是...

    Android开发基础习题

    为了使ListView能够正确显示数据,需要使用Adapter(适配器)类来连接数据源和ListView,从而实现数据与界面的解耦。 7. **_______方法可以用来拦截有序广播终止广播。** - **知识点解释:** 在Android中,有序...

    android 开发技巧

    WebView允许应用内嵌网页浏览器,可以加载网页、显示HTML内容。掌握WebView的使用,可以让开发者在应用内提供Web页面的查看功能。 9. ScrollView的使用 ScrollView是一种可以滚动的视图,可以包含其他控件,并允许...

    android布局

    Android提供了多种布局方式来满足不同的设计需求,这些布局包括线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图...

    老师讲的Android,自己总结的要点

    ### HTML文本显示与适配器使用 在Android中,使用HTML格式化文本可以通过`Html.fromHtml()`方法实现: ```java t1.setText(Html.fromHtml("111&lt;font color='red'&gt;222&lt;/font&gt;333")); ``` 适配器(Adapter)是用于...

    Android七种layout布局实例(可直接运行)

    例如,在一个活动中,可能需要先使用LinearLayout或RelativeLayout来整体布局,然后在特定区域嵌入一个TableLayout展示表格数据,再添加一个TabLayout来分页显示内容,最后在底部使用GridView或ListView展示一系列可...

    android布局精解

    本文将深入探讨Android中常见的七种布局方式,包括线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图(List View)...

    4、Android View详解第三部分.pptx

    **ListView**是Android中非常常用的一个组件,用于显示一列可滚动的项目。创建ListView有两种方式:直接使用ListView组件或让Activity继承ListActivity。为了填充ListView,我们需要创建一个Adapter,Adapter负责...

    Android Layout

    Android提供了多种布局类型以满足不同的UI设计需求。 #### 布局类型 - **线性布局(LinearLayout)**: 是最常用的布局之一,它可以水平或垂直地排列其子视图(View)。 - **相对布局(RelativeLayout)**: 允许根据其他...

Global site tag (gtag.js) - Google Analytics