android 表格展示數(shù)據(jù)

有時(shí)候項(xiàng)目中可能會(huì)用到表格的形式來(lái)展示信息置吓,這樣會(huì)比較直觀的看到數(shù)據(jù)菱阵,也會(huì)很清晰的坐到數(shù)據(jù)對(duì)比乳蓄,之前有一個(gè)項(xiàng)目用到了他爸,就來(lái)記錄一下:

首先就是布局聂宾,頁(yè)面很簡(jiǎn)單:

不知道我什么貼不出來(lái),頁(yè)面就是include一個(gè)表格的頭部诊笤,然后ScrollView嵌套一個(gè)自定義的listview

include嵌入的就是表格的頭部系谐,嵌入之后可以固定他的長(zhǎng)度,寬度讨跟,比較方便纪他,在外部寫可以設(shè)置大小,顏色和線條之類的晾匠,我寫的這個(gè)只是3個(gè)textview 之間加了view茶袒,頂部以及底部添加線條。

上面還有一個(gè)自定義的listview凉馆,因?yàn)閟crollview里面添加listview的時(shí)候弹谁,不是自定義的時(shí)候只顯示一條,所以我們?yōu)榱私鉀Q這個(gè)問(wèn)題句喜,就自定義一個(gè)listview预愤。

import android.content.Context;

import android.util.AttributeSet;

import android.widget.ListView;

/**

* 解決ScrollView中嵌套ListView,ListView只顯示一行問(wèn)題

*/

public class WListView extends ListView {

? ? public WListView(Context context) {

? ? ? ? super(context);

? ? }

? ? public WListView(Context context, AttributeSet attrs) {

? ? ? ? super(context, attrs);

? ? }

? ? public WListView(Context context, AttributeSet attrs, int defStyleAttr) {

? ? ? ? super(context, attrs, defStyleAttr);

? ? }

? ? @Override

? ? protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

? ? ? ? //根據(jù)模式據(jù)算每個(gè)child的高度和寬度

? ? ? ? int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

? ? ? ? super.onMeasure(widthMeasureSpec, expandSpec);

? ? }

}

接下來(lái)就是Activity里面的代碼設(shè)置咳胃,構(gòu)建一個(gè)Bean類存放數(shù)據(jù)植康,再構(gòu)建一個(gè)適配器加載存放的數(shù)據(jù),放到listview里面展懈,完美的加載數(shù)據(jù)并顯示.Bean類就不貼出來(lái)了销睁,下面是Activity和Adapter的具體代碼:

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

import com.example.ztms_usb.Framgment.inter_face.KeyPath;

import com.example.ztmsandroid_USB.R;

import com.ztmsandroid.data.Data;

import com.ztmsandroid.utils.SharedPreferencesUtils;

import com.ztmsandroid.utils.ui.ProgressDialogEx;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import okhttp3.Call;

import okhttp3.Callback;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.Response;

/**

* 數(shù)據(jù)

*/

public class Data_Table extends Activity {

? ? private String current_timestamp, username, key;

? ? private ProgressDialogEx progressDlgEx;

? ? private Handler mHandler = new Handler();

? ? private String sensor;

? ? private ListView tableListView;

? ? private List list;

? ? private String time, temp, hum, v, id;

? ? private TextView dayin, sensorr;

? ? private ImageView back;

? ? @Override

? ? protected void onCreate(Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.datatable);

? ? ? ? Intent intent = getIntent();

? ? ? ? sensor = intent.getStringExtra("sensor");

? ? ? ? id = intent.getStringExtra("id");

? ? ? ? progressDlgEx = new ProgressDialogEx(this, mHandler);

? ? ? ? sensorr = (TextView) this.findViewById(R.id.sensor);

? ? ? ? sensorr.setText("Sensor:" + sensor);


? ? ? ? back = (ImageView) this.findViewById(R.id.back);

? ? ? ? back.setOnClickListener(new View.OnClickListener() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void onClick(View v) {

? ? ? ? ? ? ? ? finish();

? ? ? ? ? ? }

? ? ? ? });

? ? ? ? ViewGroup tableTitle = (ViewGroup) findViewById(R.id.table_title);

? ? ? ? tableListView = (ListView) findViewById(R.id.list);

? ? ? ? show();

? ? }

? ? /*獲取運(yùn)單號(hào)信息*/

? ? private void show() {

? ? ? ? // TODO Auto-generated method stub

? ? ? ? username = SharedPreferencesUtils.getString(Data_Table.this, "userName", "");// 獲取用戶名

? ? ? ? key = Data.getInstance().key;

? ? ? ? current_timestamp = Data.getInstance().current_timestamp;

? ? ? ? new Thread() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void run() {

? ? ? ? ? ? ? ? progressDlgEx.simpleModeShowHandleThread();

? ? ? ? ? ? ? ? OkHttpClient okHttpClient = new OkHttpClient();

? ? ? ? ? ? ? ? String format = String.format(KeyPath.Path.head + KeyPath.Path.lastdatas, "c" + sensor, username, key, current_timestamp);

? ? ? ? ? ? ? ? Request build1 = new Request.Builder().url(format).build();

? ? ? ? ? ? ? ? okHttpClient.newCall(build1).enqueue(new Callback() {

? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? public void onFailure(Call call, IOException e) {

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? public void onResponse(Call call, Response response) throws IOException {

? ? ? ? ? ? ? ? ? ? ? ? String string = response.body().string();

? ? ? ? ? ? ? ? ? ? ? ? if (string != null) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? final JSONArray jsonarray = new JSONArray(string);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? list = new ArrayList();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mHandler.post(new Runnable() {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public void run() {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < jsonarray.length(); i++) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? JSONObject jsonObject = jsonarray.getJSONObject(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? time = jsonObject.get("time").toString();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? temp = jsonObject.get("temp").toString();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hum = jsonObject.get("hum").toString();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v = jsonObject.get("v").toString();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? list.add(new bean(time, temp, hum, v));

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } catch (JSONException e) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TableAdapter adapter = new TableAdapter(Data_Table.this, list);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tableListView.setAdapter(adapter);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? ? ? ? ? ? ? } catch (JSONException e) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? ? ? ? ? ? ? } finally {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? progressDlgEx.closeHandleThread();

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? });

? ? ? ? ? ? }

? ? ? ? }.start();

? ? }

}

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

import com.example.ztmsandroid_USB.R;

import java.util.List;

public class TableAdapter extends BaseAdapter {

? ? private List list;

? ? private LayoutInflater inflater;

? ? public TableAdapter(Context context, List list) {

? ? ? ? this.list = list;

? ? ? ? inflater = LayoutInflater.from(context);

? ? }

? ? @Override

? ? public int getCount() {

? ? ? ? int ret = 0;

? ? ? ? if (list != null) {

? ? ? ? ? ? ret = list.size();

? ? ? ? }

? ? ? ? return ret;

? ? }

? ? @Override

? ? public Object getItem(int position) {

? ? ? ? return list.get(position);

? ? }

? ? @Override

? ? public long getItemId(int position) {

? ? ? ? return position;

? ? }

? ? @Override

? ? public View getView(int position, View convertView, ViewGroup parent) {

? ? ? ? bean goods = (bean) this.getItem(position);

? ? ? ? ViewHolder viewHolder;

? ? ? ? if (convertView == null) {

? ? ? ? ? ? viewHolder = new ViewHolder();

? ? ? ? ? ? convertView = inflater.inflate(R.layout.list_item, null);

? ? ? ? ? ? viewHolder.goodId = (TextView) convertView.findViewById(R.id.text_id);

? ? ? ? ? ? viewHolder.goodName = (TextView) convertView.findViewById(R.id.text_goods_name);

? ? ? ? ? ? viewHolder.goodCodeBar = (TextView) convertView.findViewById(R.id.text_codeBar);

? ? ? ? ? ? viewHolder.goodNum = (TextView) convertView.findViewById(R.id.text_num);

? ? ? ? ? ? convertView.setTag(viewHolder);

? ? ? ? } else {

? ? ? ? ? ? viewHolder = (ViewHolder) convertView.getTag();

? ? ? ? }

? ? ? ? viewHolder.goodId.setText(goods.getTime());

? ? ? ? viewHolder.goodId.setTextSize(13);

? ? ? ? viewHolder.goodName.setText(goods.getTemp());

? ? ? ? viewHolder.goodName.setTextSize(13);

? ? ? ? viewHolder.goodCodeBar.setText(goods.getHum());

? ? ? ? viewHolder.goodCodeBar.setTextSize(13);

? ? ? ? viewHolder.goodNum.setText(goods.getV());

? ? ? ? viewHolder.goodNum.setTextSize(13);

? ? ? ? return convertView;

? ? }

? ? public static class ViewHolder {

? ? ? ? public TextView goodId;

? ? ? ? public TextView goodName;

? ? ? ? public TextView goodCodeBar;

? ? ? ? public TextView goodNum;

? ? }

}

適配器加載的Layout頁(yè)面和主頁(yè)面include的頁(yè)面是同一個(gè)頁(yè)面供璧。Activity只需要把接口取到的數(shù)據(jù)add到list里面,然后放到適配器就好冻记,然后適配器再展示數(shù)據(jù)睡毒,整體來(lái)說(shuō)還是比較簡(jiǎn)單的,主要是最近兩天比較空閑冗栗,所以就想著寫點(diǎn)東西記錄一下演顾。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市隅居,隨后出現(xiàn)的幾起案子钠至,更是在濱河造成了極大的恐慌,老刑警劉巖胎源,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棉钧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涕蚤,警方通過(guò)查閱死者的電腦和手機(jī)宪卿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)万栅,“玉大人愧捕,你說(shuō)我怎么就攤上這事∩旯常” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵瘪阁,是天一觀的道長(zhǎng)撒遣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)管跺,這世上最難降的妖魔是什么义黎? 我笑而不...
    開(kāi)封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮豁跑,結(jié)果婚禮上廉涕,老公的妹妹穿的比我還像新娘。我一直安慰自己艇拍,他們只是感情好狐蜕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著卸夕,像睡著了一般层释。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上快集,一...
    開(kāi)封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天贡羔,我揣著相機(jī)與錄音廉白,去河邊找鬼。 笑死乖寒,一個(gè)胖子當(dāng)著我的面吹牛猴蹂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播楣嘁,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼磅轻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了马澈?” 一聲冷哼從身側(cè)響起瓢省,我...
    開(kāi)封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痊班,沒(méi)想到半個(gè)月后勤婚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涤伐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年馒胆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凝果。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祝迂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出器净,到底是詐尸還是另有隱情型雳,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布山害,位于F島的核電站纠俭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浪慌。R本人自食惡果不足惜冤荆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望权纤。 院中可真熱鬧钓简,春花似錦、人聲如沸汹想。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)古掏。三九已至坐榆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冗茸,已是汗流浹背席镀。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工匹中, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豪诲。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓顶捷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親屎篱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子服赎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容