您的位置:首页 > 其它

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();

}
}


数据的话,就用随机数随便取了。编码随便了一点,大家凑合着看吧哈。

附上效果图:



源代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: