自定义任意MyAdapter extends BaseAdapter(纯Java)


适用于与Spinner、AutoCompleteTextView、Gallery、GridView、ListView等 

主要完成下面两个函数

public int getCount() {}

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

  1. import java.util.*;  
  2.   
  3. import Android.content.Context;  
  4. import android.view.*;  
  5. import android.widget.*;  
  6. import android.widget.ImageView.ScaleType;  
  7.   
  8. public class MyAdapter extends BaseAdapter{  
  9.       
  10.     Context context=null;  
  11.     List<Map<String,Object>> list=null;  
  12.       
  13.     MyAdapter(Context context){  
  14.         this.context=context;  
  15.         //数据初始化   
  16.         list=new ArrayList<Map<String,Object>>();  
  17.         Map<String,Object> item;  
  18.         item=new HashMap<String,Object>();  
  19.         item.put("头像",R.drawable.icon);  
  20.         item.put("姓名","三爷同学");  
  21.         item.put("性别","男");  
  22.         item.put("年龄""15岁");  
  23.         list.add(item);  
  24.         item=new HashMap<String,Object>();  
  25.         item.put("头像",R.drawable.icon);  
  26.         item.put("姓名","木木同学");  
  27.         item.put("性别","男");  
  28.         item.put("年龄""15岁");  
  29.         list.add(item);  
  30.         item=new HashMap<String,Object>();  
  31.         item.put("头像",R.drawable.icon);  
  32.         item.put("姓名","小四同学");  
  33.         item.put("性别","女");  
  34.         item.put("年龄""14岁");  
  35.         list.add(item);  
  36.     }  
  37.     public int getCount() {return list.size();}  
  38.     public Object getItem(int position) {return position;}  
  39.     public long getItemId(int position) {return position;}  
  40.   
  41.     public View getView(int position, View convertView, ViewGroup parent) {  
  42.         //头像   
  43.         ImageView iv=new ImageView(context);  
  44.         RelativeLayout.LayoutParams lp_iv=new RelativeLayout.LayoutParams(-2,-2);  
  45.         lp_iv.addRule(RelativeLayout.ALIGN_PARENT_LEFT);  
  46.         iv.setLayoutParams(lp_iv);  
  47.         iv.setScaleType(ScaleType.CENTER_INSIDE);  
  48.         iv.setImageResource((Integer)((list.get(position)).get("头像")));  
  49.         //姓名   
  50.         TextView name=new TextView(context);  
  51.         RelativeLayout.LayoutParams lp_tv=new RelativeLayout.LayoutParams(-2,-2);  
  52.         lp_tv.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);  
  53.         name.setLayoutParams(lp_tv);  
  54.         name.setTextSize(name.getTextSize()+10);  
  55.         name.setText((String)(list.get(position).get("姓名")));  
  56.         //性别   
  57.         TextView sex=new TextView(context);  
  58.         RelativeLayout.LayoutParams lp_sex=new RelativeLayout.LayoutParams(-2,-2);  
  59.         lp_sex.addRule(RelativeLayout.ALIGN_PARENT_LEFT);  
  60.         sex.setLayoutParams(lp_sex);  
  61.         sex.setText((String)(list.get(position).get("性别")));  
  62.         //年龄   
  63.         TextView  age=new TextView(context);  
  64.         RelativeLayout.LayoutParams lp_age=new RelativeLayout.LayoutParams(-2,-2);  
  65.         lp_age.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);  
  66.         age.setLayoutParams(lp_age);  
  67.         age.setText((String)(list.get(position).get("年龄")));  
  68.         //相对布局1   
  69.         RelativeLayout rl1=new RelativeLayout(context);  
  70.         rl1.setLayoutParams(new RelativeLayout.LayoutParams(-1,-2));  
  71.         rl1.addView(iv);  
  72.         rl1.addView(name);  
  73.         //相对布局2   
  74.         RelativeLayout rl2=new RelativeLayout(context);  
  75.         rl2.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));  
  76.         rl2.addView(sex);  
  77.         rl2.addView(age);  
  78.         //返回视图   
  79.         LinearLayout returnView=new LinearLayout(context);  
  80.         returnView.setLayoutParams(new ListView.LayoutParams(-1,-2));//注意:ListView.LayoutParams   
  81.         returnView.setOrientation(LinearLayout.VERTICAL);  
  82.         returnView.addView(rl1);  
  83.         returnView.addView(rl2);  
  84.   
  85.         return returnView;  
  86.     }  
  87.   
  88. }  

相关内容