TableLayout的使用来制作表格
2015-08-06 16:11
417 查看
【记录】TableLayout制作表格
任务需求制作表格,一开始的时候就是自己用ListView的去做。表格中内容只需要显示文字,所以不是很难。List中的Item的显示想法:textview+view+textview+view+textview。效果虽然是做出来了,但是很明显不好看。所以自己找了些方法,再问了大神。表格嘛,还是用TableLayout嘛。。
好了,不废话了。开始代码:
我就写了很简单的一个demo了,主要是为了自己记录一下。以后忘了还能看看
MainActivity.java
DataTest.java
就两个类 一个MainActivity制作表格,DataTest自己写了json的假数据。
MainActivity:
public class MainActivity extends Activity { private TableLayout myTableLayout; ArrayList<Map<String, String>> tableData = new ArrayList<Map<String, String>>(); int LW = ViewGroup.LayoutParams.MATCH_PARENT; int LH = ViewGroup.LayoutParams.WRAP_CONTENT; Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 1) { if (msg.arg1 == 1) { int count = myTableLayout.getChildCount(); // 删除除标题外的布局 if (count > 2) { myTableLayout.removeViews(2, count - 2); } // 生成表格 if (tableData.size() > 0) { for (int i = 0; i < tableData.size(); i++) { Map<String, String> data = tableData.get(i); TableRow row = new TableRow(getApplicationContext()); row.setBackgroundColor(getResources().getColor( R.color.darkergray)); TextView col1 = new TextView( getApplicationContext()); col1.setText(data.get("one")); col1.setTextAppearance(getApplicationContext(), R.style.tableRowContent); col1.setBackgroundResource(R.drawable.tablebordershappe); col1.setGravity(Gravity.CENTER); row.addView(col1); TextView col2 = new TextView( getApplicationContext()); col2.setText(data.get("two")); col2.setTextAppearance(getApplicationContext(), R.style.tableRowContent); col2.setBackgroundResource(R.drawable.tablebordershappe); col2.setGravity(Gravity.CENTER); row.addView(col2); TextView col3 = new TextView( getApplicationContext()); col3.setText(data.get("three")); col3.setTextAppearance(getApplicationContext(), R.style.tableRowContent); col3.setBackgroundResource(R.drawable.tablebordershappe); col3.setGravity(Gravity.CENTER); row.addView(col3); myTableLayout.addView(row, new TableLayout.LayoutParams(LW, LH)); } } else { TableRow row = new TableRow(getApplicationContext()); row.setBackgroundColor(getResources().getColor( R.color.darkergray)); TextView col1 = new TextView(getApplicationContext()); col1.setText("暂无数据!"); col1.setTextAppearance(getApplicationContext(), R.style.tableRowContent); col1.setBackgroundResource(R.drawable.tablebordershappe); col1.setGravity(Gravity.CENTER); col1.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.0f)); row.addView(col1); myTableLayout.addView(row, new TableLayout.LayoutParams(LW, LH)); } } } return false; } }); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myTableLayout = (TableLayout) findViewById(R.id.myTablelayout); new LoadData().start(); } class LoadData extends Thread { @Override public void run() { tableData.clear(); Message message = new Message(); try { // String result = HttpSendData.SendGet(url, map, "utf-8", // application.getHTTPURL()); String result = DataTest.getTableData(); if (result != null && result.length() > 0) { JSONObject obj = new JSONObject(result); if (!obj.isNull("success") && "0".equals(obj.getString("success"))) { if (!obj.isNull("myTable")) { JSONArray arr = obj.getJSONArray("myTable"); for (int i = 0; i < arr.length(); i++) { JSONObject o = arr.getJSONObject(i); Map<String, String> d = new HashMap<String, String>(); d.put("one", o.getString("one")); d.put("two", o.getString("two")); d.put("three", o.getString("three")); tableData.add(d); } } message.arg1 = 1; } else { message.obj = "服务器响应错误!"; } } else { message.obj = "网络连接错误或服务器无响应!"; } } catch (Exception e) { message.obj = "数据解析错误"; } message.what = 1; handler.sendMessage(message); } } }
DataTest:
public class DataTest { public static String getTableData() { StringBuffer json = new StringBuffer(); json.append("{\"success\":\"0\""); StringBuffer data = new StringBuffer(); for (int i = 0; i < 7; i++) { float myVal = (float) (Math.random() * 100); if (i != 0) { data.append(","); } data.append("{\"one\":\"").append(myVal) .append("\",\"two\":\"").append(myVal) .append("\",\"three\":\"").append(myVal) .append("\"}"); } json.append(",\"myTable\":[").append(data).append("]}"); return json.toString(); } }
数据的话,就用随机数随便取了。编码随便了一点,大家凑合着看吧哈。
附上效果图:
源代码
相关文章推荐
- ZooKeeper监控
- poj 3278Catch That Cow(hd2717)
- layout_gravity不起作用的原因分析
- HTTP与HTTPS的区别
- hello World
- oracle导入时IMP-00010: 不是有效的导出文件, 头部验证失败
- CSS3选择器
- 利用JAVA反射机制实现调用私有方法
- hdoj---Rescue
- HTML5应用localStorage保存数据
- Android开发IM中的消息Notification的一个小小使用.
- MySql连接10060问题教训
- mysql 字段类型VARCHAR转换成DECIMAL
- elk 日志分析系统
- 生成 温度-AD 对照表
- IP地址CString和DWORD转换
- 线程安全与并发编程探究(七)--volatile java内存模型及线程知识小结
- 《鸟哥的Linux私房菜》学习Shell部分(2)
- ant 基础
- 【连载】实用小demo连载 3 —— js 时间转换 demo