1 package com.lixu.fenzu; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 6 import android.app.ListActivity; 7 import android.content.Context; 8 import android.graphics.Color; 9 import android.os.Bundle; 10 import android.util.Log; 11 import android.view.LayoutInflater; 12 13 import android.view.View; 14 import android.view.ViewGroup; 15 import android.widget.ArrayAdapter; 16 import android.widget.ListView; 17 import android.widget.TextView; 18 19 public class MainActivity extends ListActivity { 20 private static final String TYPE = "type"; 21 private static final String DATE = "date"; 22 private static final int GROUP = -1; 23 private static final int ITEM = -2; 24 25 private ArrayList<HashMap<String, Object>> item = null; 26 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 31 ListView lv = this.getListView(); 32 ArrayAdapter adapter = new MyAdaper(this, 1); 33 34 item = new ArrayList<HashMap<String, Object>>(); 35 36 37 String[] groups = { "家人", "朋友", "同学", "同事" }; 38 String[] date = { "张三", "李四", "王五", "狗儿" }; 39 for (String str:groups) { 40 HashMap<String, Object> group_map = new HashMap<String, Object>(); 41 42 group_map.put(TYPE, GROUP); 43 group_map.put(DATE, str); 44 item.add(group_map); 45 for (String n : date) { 46 47 HashMap<String, Object> date_map = new HashMap<String, Object>(); 48 49 date_map.put(TYPE, ITEM); 50 date_map.put(DATE, n); 51 item.add(date_map); 52 53 } 54 55 } 56 lv.setAdapter(adapter); 57 58 } 59 60 public class MyAdaper extends ArrayAdapter { 61 private LayoutInflater flater = null; 62 63 public MyAdaper(Context context, int resource) { 64 super(context, resource); 65 flater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 66 } 67 68 @Override 69 public int getCount() { 70 return item.size(); 71 } 72 73 @Override 74 public int getItemViewType(int position) { 75 HashMap<String, Object> map = item.get(position); 76 return (Integer) map.get(TYPE); 77 } 78 79 @Override 80 public int getViewTypeCount() { 81 82 return 2; 83 } 84 85 @Override 86 public View getView(int position, View convertView, ViewGroup parent) { 87 int type = getItemViewType(position); 88 // 根据不同的view type加载不同的布局文件。 89 switch (type) { 90 case GROUP: 91 92 convertView = flater.inflate(R.layout.activity_main, null); 93 TextView tv1 = (TextView) convertView.findViewById(R.id.tv1); 94 tv1.setText(item.get(position).get(DATE) + ""); 95 tv1.setBackgroundColor(Color.RED); 96 tv1.setTextSize(20); 97 98 break; 99 case ITEM: 100 convertView = flater.inflate(R.layout.activity_main, null); 101 TextView tv2 = (TextView) convertView.findViewById(R.id.tv1); 102 tv2.setText(item.get(position).get(DATE) + ""); 103 104 break; 105 106 default: 107 break; 108 } 109 110 return convertView; 111 } 112 113 } 114 }
运行效果: