我犯的错就是把simpeAdapter和baseAdaper看成一样的

首先要实现对这个控件的监控  可以写一个类继承baseAdaper,可以用一个通用的例子实现

package com.xiaoqiu.phonebeta;



import java.util.List;

import java.util.Map;



import android.app.AlertDialog;

import android.content.Context;

import android.content.Intent;

import android.graphics.Bitmap;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.ImageView;

import android.widget.ProgressBar;

import android.widget.TextView;

import android.widget.Toast;

import android.widget.CompoundButton.OnCheckedChangeListener;



public class MySimpleAdapter extends BaseAdapter {

	private LayoutInflater mInflater;

	public ProgressBar pb;

	public ImageView iv;

	Bitmap bitmap;

	private List<Map<String, Object>> list;

	private int layoutID;

	private String flag[];

	private int ItemIDs[];

	public MySimpleAdapter(Context context, List<Map<String, Object>> list,

			int layoutID, String flag[], int ItemIDs[]) {

		this.mInflater = LayoutInflater.from(context);

		this.list = list;

		this.layoutID = layoutID;

		this.flag = flag;

		this.ItemIDs = ItemIDs;

	}

	public int getCount() {

		// TODO Auto-generated method stub

		return list.size();

	}



	public Object getItem(int arg0) {

		// TODO Auto-generated method stub

		return list.get(arg0);

	}





	public long getItemId(int arg0) {

		// TODO Auto-generated method stub

		

		return 0;

	}



	public View getView(int position, View convertView, ViewGroup parent) {

		convertView = mInflater.inflate(layoutID, null);

		for (int i = 0; i < flag.length; i++) {//备注1

			if (convertView.findViewById(ItemIDs[i]) instanceof ImageView) {

				ImageView iv = (ImageView) convertView.findViewById(ItemIDs[i]);

				iv.setBackgroundResource((Integer) list.get(position).get(

						flag[i]));

			} else if (convertView.findViewById(ItemIDs[i]) instanceof TextView) {

				TextView tv = (TextView) convertView.findViewById(ItemIDs[i]);

				tv.setText((String) list.get(position).get(flag[i]));

			}else {	

				

			}

		}

		System.out.println("--------->"+ItemIDs);

		addListener(convertView,position);

		

		

		return convertView;

	}

/**

 * 

 * 备注3

 */

	public void addListener(View convertView,int arg) {

		final int arg2=arg;

		((ImageView)convertView.findViewById(R.id.call)).setOnClickListener(

				new View.OnClickListener() {


					public void onClick(View v) {

						//
自己要实现的地方
						System.out.println("........");

					}

		

		});

	}

}

 注意在主Activity中调用的时候

 ph_lv.setOnItemClickListener(new OnItemClickListener(){

            @SuppressWarnings("rawtypes")
            public void onItemClick(AdapterView<?> parent, View view,  int id,
                    long arg3) {
                HashMap item = (HashMap)parent.getItemAtPosition(id);
                Intent intent = new Intent(Main.this,Userdisplay.class);
                User user = new User();
                user._id = Integer.parseInt(String.valueOf(item.get("_id")));
                user.name = String.valueOf(item.get("name"));
                user.number = String.valueOf(item.get("number"));
                user.qq = String.valueOf(item.get("qq"));
                user.email = String.valueOf(item.get("email"));
                Bundle bundle = new Bundle();
                bundle.putSerializable("user", user);
                intent.putExtras(bundle);
                startActivity(intent);
                finish();  // pass object
            //    intent.put("_id", _id);
                //startActivity(intent);
                System.out.println("error----->"+user._id);
                }
        });

要使用 HashMap item = (HashMap)parent.getItemAtPosition(id);

必须在前面构造的通用baseAdapter类中的

public Object getItem(int arg0) {

// TODO Auto-generated method stub

return list.get(arg0);
}
把返回值写成list.get(arg0)这样才返回的是对象 不然的话返回默认值0 那么就会出现类型转换错误
posted on 2011-12-04 01:58  纯洁的坏蛋  阅读(363)  评论(0编辑  收藏  举报