您的位置:首页 > 移动开发 > Android开发

android 怎么给listview添加一个固定表头以及显示像table的效果

2013-05-30 15:32 591 查看
定义一个样式一条线

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

}

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