我犯的错就是把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 那么就会出现类型转换错误
浙公网安备 33010602011771号