现在的位置: 首页 > 综合 > 正文

android listview item定义不同的样式布局

2013年08月13日 ⁄ 综合 ⁄ 共 2329字 ⁄ 字号 评论关闭

Android Listview 是常用的数据展现控件,往往用于显示列表形式的数据。如果仅仅显示数据往往会显得很单调,很多时候根据需要定义不同的item 背景选项,例如定义数据的标题,表头或者间隔显示Listview item背景内容。

现在以一个Demo为模型,展现如图-1的所示的背景内容,分析Listview的相关使用方法。

图-1 天气列表显示的demo

实现思路:定义Listview不同的背景,首先要定义好标题与表格内容的两个不同的xml布局文件(city_item.xml,content_item.xml)。在填充数据的时候往往采用构造一个Adapter数据类型,根据构造的数据类型,判断不同的数据类型,采用LayoutInflater类填充不同的layout文件,从而返回不同的View。

LayoutInflater使用方法:

  1. LayoutInflater inflater = LayoutInflater.from(this);  
  2.   
  3. View view=inflater.inflate(R.layout.ID, null);  

构造WeatherAdapter类继承BaseAdapter并实现相关的接口函数,实现对列表数据的填充。其中数据的结构比较关键,可以控制相关的标题和内容的关系。

ListViewActivity类则主要是实现并填充相应的数据,显示相关数据。

程序代码如下:

1.WeatherAdapter.java

  1. package com.test.main;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5.   
  6. import android.content.Context;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.widget.BaseAdapter;  
  11. import android.widget.ImageView;  
  12. import android.widget.TextView;  
  13.   
  14. public class WeatherAdapter extends BaseAdapter{  
  15.   
  16. //数据源  
  17. private List<HashMap<String,String>> list;  
  18. private Context context;  
  19. private int []type;  
  20.   
  21. //构造函数  
  22. public WeatherAdapter (Context context,List<HashMap<String,String>> list,  
  23.  int[] type){  
  24. this.context = context;  
  25. this.list = list;  
  26. this.type=type;  
  27. }  
  28.   
  29. @Override  
  30. public int getCount() {  
  31. // TODO Auto-generated method stub  
  32. return list.size();  
  33. }  
  34.   
  35. @Override  
  36. public Object getItem(int position) {  
  37. // TODO Auto-generated method stub  
  38. return list.get(position);  
  39. }  
  40.   
  41. @Override  
  42. public long getItemId(int position) {  
  43. // TODO Auto-generated method stub  
  44. return position;  
  45. }  
  46.   
  47. @Override  
  48. public View getView(int position, View convertView, ViewGroup parent) {  
  49. // TODO Auto-generated method stub  
  50. LayoutInflater mInflater = LayoutInflater.from(context);  
  51. //产生一个View  
  52. View view = null;  
  53. //根据type不同的数据类型构造不同的View,也可以根据1,2,3天数构造不同的样式  
  54. if(type[position]==0){  
  55. view = mInflater.inflate(R.layout.city_item, null);  
  56. //获取城市名称  
  57. String cityName=list.get(position).get("data");  
  58. ImageView image=(ImageView)view.findViewById(R.id.weather_image);  
  59.   
  60. if(cityName.equals("北京")){  
  61. image.setImageResource(R.drawable.beijing);  
  62. }else if(cityName.equals("上海")){  
  63. image.setImageResource(R.drawable.shanghai);  
  64.   
  65. }else if(cityName.equals("广州")){  
  66. image.setImageResource(R.drawable.guangzhou);  
  67.   
  68. }

抱歉!评论已关闭.