1. 程式人生 > >android 怎麼給listview新增一個固定表頭以及顯示像table的效果

android 怎麼給listview新增一個固定表頭以及顯示像table的效果

定義一個樣式一條線

    <style name="vertical_layout">
        <item name="android:layout_width">1dp</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:background">#dadada</item>
    </style>

1.為表頭新建一個layout:a_item.xml(一共設定3個列名) 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/a_item"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:cacheColorHint="#00000000"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/item1bzrbjzb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:ellipsize="none"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:singleLine="false"
        android:textSize="15.0sp" >
    </TextView>

    <View style="@style/vertical_layout" /> <!-- 一條線 -->

    <TextView
        android:id="@+id/item2bzrbjzb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:ellipsize="none"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:singleLine="false"
        android:text="@string/bzr_km"   <!-- 列名-->
        android:textColor="@android:color/black"
        android:textSize="15.0sp" >
    </TextView>

    <View style="@style/vertical_layout" />         <!-- 一條線 -->

    <TextView
        android:id="@+id/item3bzrbjzb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:ellipsize="none"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:singleLine="false"
        android:text="@string/bzr_bjqk"   <!-- 列名-->

        android:textColor="@android:color/black"
        android:textSize="15.0sp" >
    </TextView>

    <View style="@style/vertical_layout" /> <!-- 一條線 -->

    <TextView
        android:id="@+id/item4bzrbjzb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:ellipsize="none"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:singleLine="false"
        android:text="@string/bzr_jfjgl"    <!-- 列名-->

        android:textColor="@android:color/black"
        android:textSize="15.0sp" >
    </TextView>

    <TextView
        android:id="@+id/item6ctj"
        android:layout_width="100.0dip"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:ellipsize="none"
        android:gravity="center"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:singleLine="false" >
    </TextView>

</LinearLayout>

第一個和最後一個textView不給賦值,用於填充螢幕的空白,顯示好看

2.給介面**Activity新建一個main_layout,應用剛才的a_item.xml以及新增一個繼承了listView的view物件HVListView

***

  <include layout="@layout/a_item" />
   
    <com.gdtech.znpc.android.view.HVListView

android:id="@android:id/list"
  android:background="@android:color/white" android:fastScrollEnabled="true"
  android:fadingEdgeLength="0.0sp" android:layout_width="wrap_content"
  android:layout_height="fill_parent" android:drawSelectorOnTop="false"
  android:divider="#dadada"
  android:dividerHeight="1.0dip"
  android:cacheColorHint="#00000000">
 </com.gdtech.znpc.android.view.HVListView >
    ******

3.獲取螢幕的解析度 為每個表頭的設定寬度

private DisplayMetrics dm = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(dm);
  private int w = dm.widthPixels / 16; // 當前解析度 寬度 分為16份

獲取a_item裡面的每個textView的id 進行寬度設定

mListView = (HVListView) findViewById(android.R.id.list);
  // 設定列頭
  mListView.mListHead = (LinearLayout) findViewById(R.id.a_item);
  // 設定表頭的寬度
  TextView t11 = (TextView) findViewById(R.id.item1bzrbjzb);
  TextView t12 = (TextView) findViewById(R.id.item2bzrbjzb);
  TextView t13 = (TextView) findViewById(R.id.item3bzrbjzb);
  TextView t14 = (TextView) findViewById(R.id.item4bzrbjzb);
  
  
  //t13.setText("成績");
  

  t11.setWidth(w * 0);  //不顯示第一列
  t12.setWidth(w * 3);
  t13.setWidth(w * 6);
  t14.setWidth(w * 6);

4.給HVListView新增介面卡,並設定每列的寬度和表頭對應

class ViewHolderbjzb {  // 這個類裡面定義的TextView數量和表頭裡面的TextView要一致
  TextView item1bjzb;
  TextView item2bjzb;
  TextView item3bjzb;
  TextView item4bjzb;

 }

mAdapter = new DataAdapter1();
  mListView.setAdapter(mAdapter);

private class DataAdapter1 extends BaseAdapter {

  @Override
  public int getCount() {
   return hang;// 固定顯示多少行資料
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   if (convertView == null) {
    convertView = mInflater1.inflate(R.layout.bzr_fx_bjzb_head_item,
      null);
    holder = new ViewHolderbjzb();
    holder.item1bjzb = ((TextView) convertView
      .findViewById(R.id.item1bzrbjzb));
    holder.item2bjzb = ((TextView) convertView
      .findViewById(R.id.item2bzrbjzb));
    holder.item3bjzb = ((TextView) convertView
      .findViewById(R.id.item3bzrbjzb));
    holder.item4bjzb = ((TextView)convertView
      .findViewById(R.id.item4bzrbjzb));
    // holder.item4bjzb=((TextView)
    // convertView.findViewById(R.id.item4bjzb));
    // holder.item5bjzb=((TextView)
    // convertView.findViewById(R.id.item5bjzb));
    convertView.setTag(holder);

    // 設定表格內容寬度,與表頭對應
    holder.item1bjzb.setWidth(w * 0);
    holder.item2bjzb.setWidth(w * 3);
    holder.item3bjzb.setWidth(w * 6);
    holder.item4bjzb.setWidth(w * 6);


    holder.item1bjzb.setText("");
    holder.item2bjzb.setText("");
    holder.item3bjzb.setText("");
    holder.item4bjzb.setText("");
    // holder.item4bjzb.setText("");
    // holder.item5bjzb.setText("");
   } else {
    holder = (ViewHolderbjzb) convertView.getTag();
   }

   for (int i = 0; i < listDatas.size(); i++) {
    // 顯示列的id數
    // holder.item1bjzb.setText((position + 1) + "");
  /*

listDatas 就是要顯示的後臺資料  

*/

    if (position == i) {
     Map<String, Object> row = listDatas.get(position);
     holder.item1bjzb.setText("用後臺獲取的資料 進行填充就可以"));   

  holder.item2bjzb.setText("用後臺獲取的資料 進行填充就可以")); 

    holder.item3bjzb.setText("用後臺獲取的資料 進行填充就可以"));

     holder.item4bjzb.setText("用後臺獲取的資料 進行填充就可以"));

    }
   }
   // 設定隔行顏色
   if (position % 2 != 0) {
    convertView.setBackgroundResource(R.drawable.listview_color_1);
   } else {
    convertView.setBackgroundResource(R.drawable.listview_color_2);
   }
   return convertView;
  }

相關推薦

android 怎麼listview新增一個固定表頭以及顯示table效果

定義一個樣式一條線     <style name="vertical_layout">         <item name="android:layout_width">1dp</item>         <item name

listview新增一個固定表頭 顯示Table效果

定義一個樣式一條線     <style name="vertical_layout">         <item name="Android:layout_width">1dp</item>         <item

iOS之圖片新增一個顏色相框(Swift4.2)

override func viewDidLoad() { super.viewDidLoad() // 給一張圖片新增一個顏色相框 let image

android button新增 不同狀態【點選 長按 釋放】下的樣式|異常報錯解決

步驟: 1.在drawable下新建兩個xml檔案,分別對不同狀態下的樣式進行定義。 2.對檔案內容,即btn樣式進行定義 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http:/

1.新增一個獲取最小值的方法(元素為Integer型),要求時間複雜度為O(1)

分析:在資料結構與演算法中,當要求時間複雜度最小時基本都是要犧牲空間複雜度。棧是先進後出,此處要求用棧實現一個獲取最小值的方法且時間複雜度為O(1),首先考慮的方向就是再借助一個棧來實現,這個棧主要用來儲存最小值序列(這個地方可以思考一下為什麼不能用一個變數來儲存最小值)。 下面直接附上程式碼:   

Android 文字新增陰影

<TextView android:id="@+id/tv_title_event" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layou

java圖片新增文字水印,以及docker容器新增中文字型支援

發現雖然簡單,但是水印內容通過編碼拼接在圖片地址後面,每次訪問都要加上,如果要儲存下來還需要自己存第二遍有水印的圖。可是我們並不需要沒有水印的原圖,於是決定通過程式碼新增,更自由。 程式碼如下: /** * 新增文字水印 * @param inpu

Android 7.1 新增一個設定選項

根據需求,在設定介面新增一個設定選項“USB設定” 1、packages/apps/Settings/AndroidManifest.xml 新增Activity資訊 <!-- UsbDeviceSettings --> <activ

Androidlistview新增資料篇

一、ListView:        1、 ListView通常有兩個職責:                                 1、向佈局填充資料                                 2、處理選擇點選等操作       2、ListView的建立需要3個元素:  

mysql新增一個自動備份的批處理方式

給MySQL的資料庫添加了一個開機自動備份的批處理檔案,特此分享下原始碼。 rem***********************程式碼開始**************** ********* **** reg add“HKEY_CURRENT_USER \ Software \ Micros

MySql 新增一個聯合唯一索引

做專案需要用到聯合唯一 例如,user表中有user_id,user_name兩個欄位,如果不希望有兩條一摸一樣的的user_id和user_name,需要給user表新增兩個欄位的聯合唯一索引:alter table user add unique index(use

AndroidTextView新增點選事件

1.介面 首先設定TextView的clickable屬性為true。 可以在佈局檔案中進行設定,比如: <?xml version="1.0" encoding="utf-8"?>

android button 新增邊框及底色

1、以下是設定按鈕的右邊框和底邊框顏色為紅色,邊框大小為3dp,如下圖: 在drawable新建一個 buttonstyle.xml的檔案,內容如下: <?xmlversion="1.0"encoding="UTF-8"?> <layer-

iOS UITableViewController 新增一個固定的不能滾動的控制元件

新增一個button 等寬與檢視的寬度 tryButton = [UIButtonbuttonWithType:UIButtonTypeCustom]; tryButton.frame =CGRectMake(0,self.view.frame.size.heigh

android TextView新增下劃線

package com.example.textviewbottomline; import android.app.Activity; import android.graphics.Color; import android.graphics.Paint; import

Android TextView新增點選事件

<TextView android:id="@+id/phone" android:clickable="true" --------->設定此屬性 android:layout_marginLeft="10dp

androidlistview的item設定高度

在item的layout檔案中,用android:layout_height設定item的高度。執行,高度設定無效。解決辦法: 給item設定minHeight,即可. --------------------------------------- 最近一直糾結於Li

Android RecyclerView新增頭部和尾部

之前我在GitHub上開源了一個可以實現RecyclerView列表分組的通用Adapter: 。也在部落格上寫了一篇專門介紹它的實現和使用的文章:《Android 可分組的RecyclerViewAdapter》。有一些朋友在看了我的博文和使用我的開源庫後,會

AndroidListView下拉重新整理上拉載入更多效果實現

  在Android開發中,下拉重新整理和上拉載入更多在很多app中都會有用到,下面就是具體的實現的方法。 首先,我們自定義一個RefreshListView來繼承與ListView,下面是程式碼: package com.example.downrefresh; import

Android 解決ListView巢狀GridView、GridView顯示不正常的方法

自定義View,繼承GridView,重寫onMeasure()方法,程式碼如下: public class MyGridView extends GridView { public MyGridView(Context context) {