simple adapter 添加checkbox和button控件

来源:互联网 发布:身份证登记软件 编辑:程序博客网 时间:2024/06/11 05:18

效果图:



<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">


    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5px" />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >


        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="22px" />


        <TextView
            android:id="@+id/info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="13px" />
    </LinearLayout>


    <CheckBox
        android:id="@+id/chk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>


    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>


</LinearLayout>





public class AdapterActivity extends ListActivity {


private final int bCount = 3;
Button btn;
Boolean blist[];
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//初始化所有check值为false
blist = new Boolean[bCount];
for (int i = 0; i < bCount; i++)
blist[i] = false;

        SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.simple_adapter,
                new String[]{"title","info","img","chk","btn"},
                new int[]{R.id.title,R.id.info,R.id.img,R.id.chk,R.id.btn}){
       
        //重写getView函数
        public View getView(int position, View convertView,
        ViewGroup parent) {
                    final int p=position;
                    final View view=super.getView(position, convertView, parent);
                    Button useBtn=(Button)view.findViewById(R.id.btn);
                    CheckBox chk = (CheckBox)view.findViewById(R.id.chk);
                    
                    //创建勾选控件监听事件
                    chk.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                    //重写
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
blist[p] = arg1;
}
});


                    //创建按钮监听事件
                    useBtn.setOnClickListener(new View.OnClickListener() {
                    //重写
                        public void onClick(View view) {
                            Toast.makeText(AdapterActivity.this,"索引<"+p+">\n"+blist[0]+"\n"+blist[1]+"\n"+blist[2],Toast.LENGTH_SHORT).show();
                        }
                    });
                    return view;
        }
        };
        setListAdapter(adapter);
}


    private List<Map<String, Object>> getData() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("title", "G1");
        map.put("info", "google 1");
        map.put("img", R.drawable.a1);
        map.put("btn", "按钮1");
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("title", "G2");
        map.put("info", "google 2");
        map.put("img", R.drawable.a2);
        map.put("btn", "按钮2");
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("title", "G3");
        map.put("info", "google 3");
        map.put("img", R.drawable.a3);
        map.put("btn", "按钮3");
        list.add(map);
         
        return list;
    }
    
}