daapter 代碼: java
package com.example.Listdeamon; import java.util.List; import java.util.Map; import android.app.AlertDialog; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ImageView; import android.widget.TextView; public class MySimpleAdapter extends BaseAdapter{ private LayoutInflater mInflater; private List<Map<String,Object>> list; private int layoutID; private String flag[]; private int Items[]; public MySimpleAdapter(Context context,List<Map<String, Object>>list,int layoutID,String flag[],int ItemIDs[]){ this.mInflater=LayoutInflater.from(context);//實例化 context this.list=list; this.layoutID=layoutID; this.flag=flag; this.Items=ItemIDs; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub convertView =mInflater.inflate(layoutID, null);//填充佈局; for(int i=0;i<flag.length;i++){ if(convertView.findViewById(Items[i]) instanceof ImageView){ ImageView iv=(ImageView)convertView.findViewById(Items[i]); iv.setBackgroundResource((Integer)list.get(position).get(flag[i])); }else if(convertView.findViewById(Items[i]) instanceof TextView){ TextView tv=(TextView)convertView.findViewById(Items[i]); tv.setText((String)list.get(position).get(flag[i])); } } ((Button)convertView.findViewById(R.id.btn)).setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub new AlertDialog.Builder(mInflater.getContext()).setTitle("自定義adabpter"). setMessage("觸發監聽"). show(); System.out.println("觸發按鈕"); } }); ((CheckBox)convertView.findViewById(R.id.cb)).setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub System.out.println("cheak box"); } }); return convertView; } }
Activity 代碼: android
package com.example.Listdeamon; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ListView; public class MainActivity extends Activity{ private MySimpleAdapter sp; private ListView listView; private List<Map<String, Object>> list; private String[] str={"item_imageview","item_bigtv","item_smalltv"}; private int[] intager={R.id.imv,R.id.bigtv,R.id.smalltv}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); list=new ArrayList<Map<String,Object>>(); listView=new ListView(this); Map<String, Object> map=new HashMap<String, Object>(); map.put("item_imageview", R.drawable.ic_launcher); map.put("item_bigtv", "BIGTV"); map.put("item_smalltv", "SMALLTV"); list.add(map); sp=new MySimpleAdapter(this, list, R.layout.activity_main,str, intager); listView.setAdapter(sp); setContentView(listView); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
Xml 代碼: app
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imv"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:id="@+id/bigtv"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:id="@+id/smalltv"/> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" android:id="@+id/btn"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/cb"/> </LinearLayout>
效果圖: ide