下面是在网上找的 方法:
下载地址:http://download.csdn.net/download/repoem/3874084
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" android:layout_width="fill_parent" 4 android:layout_height="fill_parent"> 5 <ListView android:id="@+id/listView" android:listSelector="#000000" 6 android:layout_width="fill_parent" 7 android:layout_height="wrap_content" /> 8 9 </LinearLayout>
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:id="@+id/LinearLayoutButton" 5 android:layout_width="144px" 6 android:layout_height="99px" 7 android:gravity="center" 8 android:orientation="vertical"> 9 10 11 <TextView 12 android:id="@+id/TextViewButton" 13 android:layout_width="fill_parent" 14 android:layout_height="fill_parent" 15 android:textSize="20px"> 16 </TextView> 17 18 19 </LinearLayout>
1 public class listButtonTest extends Activity 2 { 3 private ListView listView = null; 4 private ListAdapter listAdapter = null; 5 6 ArrayList<ButtonView> buttonListView; 7 /** Called when the activity is first created. */ 8 @Override 9 public void onCreate(Bundle savedInstanceState) 10 { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.main); 13 listView = (ListView) this.findViewById(R.id.listView); 14 buttonListView = new ArrayList<ButtonView>(); 15 ButtonView a = new ButtonView(R.string.l1); 16 buttonListView.add(a); 17 ButtonView b = new ButtonView(R.string.l2); 18 buttonListView.add(b); 19 ButtonView c = new ButtonView(R.string.l3); 20 buttonListView.add(c); 21 ButtonView d = new ButtonView(R.string.l4); 22 buttonListView.add(d); 23 ButtonView e = new ButtonView(R.string.l5); 24 buttonListView.add(e); 25 listAdapter = new ListAdapter(buttonListView); 26 listView.setAdapter(listAdapter); 27 listView.setDividerHeight(0); 28 29 listView.setOnItemClickListener(new ListView.OnItemClickListener() 30 { 31 32 @Override 33 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 34 long arg3) 35 { 36 // TODO Auto-generated method stub 37 listAdapter.setSelectedPosition(arg2); 38 39 listAdapter.notifyDataSetInvalidated(); 40 41 } 42 }); 43 }; 44 45 public class ListAdapter extends BaseAdapter 46 { 47 48 ArrayList<ButtonView> arrayList = null; 49 LayoutInflater inflater; 50 View view; 51 ButtonLayoutHolder buttonLayoutHolder; 52 LinearLayout buttonLayout = null; 53 TextView buttonText = null; 54 55 private int selectedPosition = -1;// 选中的位置 56 57 public ListAdapter(ArrayList<ButtonView> buttonListView) 58 { 59 // TODO Auto-generated constructor stub 60 arrayList = buttonListView; 61 } 62 63 @Override 64 public int getCount() 65 { 66 // TODO Auto-generated method stub 67 return arrayList.size(); 68 } 69 70 @Override 71 public Object getItem(int position) 72 { 73 // TODO Auto-generated method stub 74 return arrayList.get(position); 75 } 76 77 @Override 78 public long getItemId(int position) 79 { 80 // TODO Auto-generated method stub 81 return position; 82 } 83 84 public void setSelectedPosition(int position) 85 { 86 selectedPosition = position; 87 } 88 89 @Override 90 public View getView(int position, View convertView, ViewGroup parent) 91 { 92 // TODO Auto-generated method stub 93 inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 94 view = inflater.inflate(R.layout.button_layout, null, false); 95 buttonLayoutHolder = (ButtonLayoutHolder) view.getTag(); 96 97 if (buttonLayoutHolder == null) 98 { 99 buttonLayoutHolder = new ButtonLayoutHolder(); 100 buttonLayoutHolder.buttonLayout = (LinearLayout) view 101 .findViewById(R.id.LinearLayoutButton); 102 buttonLayoutHolder.textView = (TextView) view 103 .findViewById(R.id.TextViewButton); 104 view.setTag(buttonLayoutHolder); 105 } 106 buttonLayout = buttonLayoutHolder.buttonLayout; 107 buttonText = buttonLayoutHolder.textView; 108 if (selectedPosition == position)//选中 109 { 110 buttonText.setSelected(true); 111 buttonText.setPressed(true); 112 buttonLayout.setBackgroundColor(Color.RED); 113 buttonText.setTextColor(Color.BLUE); 114 } else//未选中 115 { 116 buttonText.setSelected(false); 117 buttonText.setPressed(false); 118 buttonLayout.setBackgroundColor(Color.TRANSPARENT); 119 buttonText.setTextColor(Color.WHITE); 120 } 121 122 //buttonText.setTextColor(Color.BLUE); 123 buttonText.setText(arrayList.get(position).textViewId); 124 125 return view; 126 127 } 128 129 }; 130 131 } 132 133 class ButtonView 134 { 135 int textViewId; 136 137 ButtonView(int tId) 138 { 139 textViewId = tId; 140 } 141 } 142 143 class ButtonLayoutHolder 144 { 145 LinearLayout buttonLayout; 146 TextView textView; 147 }