AndroidでクラスExcelの表を作成し、データを埋め込む方法

8343 ワード

この間、運営ニーズに応じて、データを表示するための小さなDemoを作成しました.この過程で、Excel表のような表示効果をコードで作ることを学びました.次はみんなと共有します.
表形式のレイアウトを作るには、表レイアウトを考えやすいので、まずlayoutを新規作成します.このlayoutには2つのTableLayoutを入れます.そのうちの1つは表のタイトルを表示するために使用され、もう1つのTableLayoutはデータを表示するために使用されます.表示される可能性のあるデータが多いことを考慮して、パンの上のScrollViewです.主なコードは次のとおりです.


    

        
    
レイアウトファイルを作成すると、私のコードに書かれているaddWidget()メソッドというデータの埋め込みが始まります.データはjsonタイプの偽データを作成し、新しいオブジェクトクラスを作成して解析するので、これは多くありません.まず、主なデータを埋め込むコードを見てみましょう.まず表のタイトル、つまり私たちがよく見ている表の一番上の欄です.主なコードは次のとおりです.
for (int j = 0; j < 1; j++) {
    TableRow localTableRow1 = new TableRow(this);
    localTableRow1.setBackgroundColor(getResources().getColor(R.color.realtime_table_bg));
    for (int k = 0; k < this.column; k++) {
        TextView localTextView1 = new TextView(this);
        localTextView1.setWidth(this.viewWidth);
        localTextView1.setBackgroundResource(R.drawable.table_shape_title);
        localTextView1.setGravity(17);
        localTextView1.setTextSize(2, 16);
        localTextView1.setTextColor(getResources().getColor(R.color.white));
        localTextView1.getPaint().setFakeBoldText(true);
        localTextView1.setSingleLine();
        switch (k) {
            default:
                break;
            case 0:
                localTextView1.setText("A");
                localTableRow1.addView(localTextView1);
                break;
            case 1:
                localTextView1.setText("B");
                localTableRow1.addView(localTextView1);
                break;
            case 2:
                localTextView1.setText("C");
                localTableRow1.addView(localTextView1);
                break;
            case 3:
                localTextView1.setText("D");
                localTableRow1.addView(localTextView1);
                break;
            case 4:
                localTextView1.setText("E");
                localTableRow1.addView(localTextView1);
                break;
            case 5:
                localTextView1.setText("F");
                localTableRow1.addView(localTextView1);
                break;
            case 6:
                localTextView1.setText("G");
                localTableRow1.addView(localTextView1);
                break;
            case 7:
                localTextView1.setText("H");
                localTableRow1.addView(localTextView1);
        }
    }
    this.tb_title.addView(localTableRow1, new TableLayout.LayoutParams(-1, -2));
}
このデータの充填を2つのforサイクルで実現し,最外層forサイクルが「j<1」と判断したのは,ここで1行で十分であるからである.ここにTabRowを新規作成し、この行に列を追加します.裏層のこのforループのcolumnは私たちの列数です.ここではA~Hで私たちの列タイトル名を表し、1つのforループで新しいTextViewを新規作成するたびに、何列目かを判断し、位置によって順番に私たちの列名を加えます.最後にtb_タイトル、つまり私たちのタイトルに対応するこのTableLayoutにこれらのviewを追加します.
同様に、次のテーブルレイアウトも同様に2つのforループで実現されますが、最外層ループはサーバから送られてきたリストサイズによって決定されます.
私たちの携帯電話は通常書評なので、表示が不十分だったり、見にくいという問題を引き起こす可能性があります.setContentView()メソッドの前に、このページに入ると横画面に表示されることを保証する判断を加えました.
if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
しかし、実行後にエラーが発生し、その後、このactivityが画面表示方向を設定していないため、最後にリストファイルに次のコードを追加すればいいことに気づきました.
android:screenOrientation="sensorLandscape"
表レイアウトの実装と運用はここまで紹介されています.demoダウンロードアドレス:http://download.csdn.net/detail/shan286/9475782