BaseAdapter的使用方法介绍

BaseAdapter是Android中常用的适配器之一,SimpleAdapter虽然好用,但是在填充一些复杂布局的时候SimpleAdapter用起来还是会觉得捉襟见肘。而BaseAdapter给复杂界面填充数据时就比SimpleAdapter好用多了。

不多BB,直接看代码:

首先写一个继承自BaseAdapter的类MyAdapter。

BaseAdapter最基本的几个方法:

1. getCount    填充的数据集数

2. getItem       数据集中指定索引对应的数据项

3. getItemId    指定行所对应的ID   

4. getView       每个Item所显示的类容

class MyAdapter extends BaseAdapter {
   Context context;
   List<PeopleBeans> data;    //数据源
   int layout;       //Item布局

   public MyAdapter(Context context, int layout ,List<PeopleBeans> data){
      this.context=context;
      this.layout=layout;
      this.data=data;
   }

   @Override
   public int getCount() {
      return data == null ? 0 : data.size();
   }

   @Override
   public Object getItem(int position) {
      return data == null ? null : data.get(position);
   }

   @Override
   public long getItemId(int position) {
      return position;
   }

   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
      ViewHolder viewHolder=null;
      ImageView imageView_sex;
      TextView textView_name;
      TextView  textView_sex;
      TextView  textView_age;
      final PeopleBeans peopleBeans=data.get(position);
      if (convertView==null) {
         viewHolder = new ViewHolder();
         convertView=LayoutInflater.from(context).inflate(layout,null);
         viewHolder.btn_setting= (Button) convertView.findViewById(R.id.btn_setting);
         convertView.setTag(viewHolder);
      }else {
         viewHolder= (ViewHolder) convertView.getTag();
      }
      imageView_sex= (ImageView) convertView.findViewById(R.id.image_sex);
      textView_name= (TextView) convertView.findViewById(R.id.textview_name);
      textView_sex= (TextView) convertView.findViewById(R.id.textview_sex);
      textView_age= (TextView) convertView.findViewById(R.id.textview_age);
      imageView_sex.setImageResource(peopleBeans.getSexImage());
      textView_name.setText(peopleBeans.getName());
      textView_sex.setText(peopleBeans.getSex());
      textView_age.setText(peopleBeans.getAge()+"");
      viewHolder.btn_setting.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(context, peopleBeans.toString(), Toast.LENGTH_SHORT).show();
         }
      });
      return convertView;
   }
}
 
 
class ViewHolder{   
   Button btn_setting;
}

class PeopleBeans{
   int sexImage;
   String name;
   String sex;
   int age;

   public int getSexImage() {
      return sexImage;
   }

   public void setSexImage(int sexImage) {
      this.sexImage = sexImage;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public String getSex() {
      return sex;
   }

   public void setSex(String sex) {
      this.sex = sex;
   }

   public int getAge() {
      return age;
   }

   public void setAge(int age) {
      this.age = age;
   }

   @Override
   public String toString() {
      return "sexImage=" + sexImage +
            ", name='" + name + '\'' +
            ", sex='" + sex + '\'' +
            ", age=" + age;
   }
}

Item布局代码

<?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="50dp"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/image_sex"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/textview_name"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/textview_sex"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/textview_age"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

    <Button
        android:id="@+id/btn_setting"
        android:layout_weight="1"
        android:text="设置"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

</LinearLayout>

现在我们的MyAdapter类已经写好了接下来我们来测试一下吧

listViewTest = (ListView) view.findViewById(R.id.listView_test);
for (int i = 0; i <4 ; i++) {
   PeopleBeans peopleBeans=new PeopleBeans();
   peopleBeans.setSexImage(i==2?R.drawable.touxiang_1:R.drawable.touxiang_2);
   peopleBeans.setName(names[i]);
   peopleBeans.setSex(i==2?"女":"男");
   peopleBeans.setAge(random.nextInt(60));
   data.add(peopleBeans);
}
adapter=new MyAdapter(getActivity(),R.layout.item_people,data);
listViewTest.setAdapter(adapter);

效果图:







猜你喜欢

转载自blog.csdn.net/ripndip/article/details/79693666