自定义BaseAdapter

ArrayAdapter

最简单的Adapter,表项中只含有文本信息的情况

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listview1">


    </ListView>

</LinearLayout>

这里写图片描述

public class MyListViewActivity extends AppCompatActivity {
    private ListView mListView;
    private String []array={"1","2","3","4"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.listview);
        ArrayAdapter<String> adapter=new ArrayAdapter(this,android.R.layout.activity_list_item,array);
        mListView=(ListView)findViewById(R.id.listview1);
        mListView.setAdapter(adapter);

     }
    }

SimpleAdapter

比ArrayAdapter复杂,每一个列表项中含有不同的子控件

XML文件相同可参见上下例
public class MyListViewActivity extends AppCompatActivity {
    private ListView mListView;
    private String []array={"1","2","3","4"};
    private List <HashMap<String,String>>mData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.listview);
        // ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.activity_list_item,array);
        mListView=(ListView)findViewById(R.id.listview1);

       //LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
       // LayoutInflater inflater=getLayoutInflater();

        initData();
        SimpleAdapter adapter=new SimpleAdapter(this,mData,R.layout.list_simple_item,
                new String[]{"name","age","sex","hobby"},new int[]{R.id.name,R.id.age,R.id.sex,R.id.hobby});
        mListView.setAdapter(adapter);
       //mListView.setOnItemLongClicListener();长按点击事件
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                HashMap<String,String>itemData=mData.get(position);
                Log.d("data",""+itemData.get("name"));
            }
        });


    }

    public void initData(){
        mData=new ArrayList();
        HashMap<String,String>zhangsan=creatHashMap("张三","20","男","打篮球");
        HashMap<String,String>lisi=creatHashMap("李四","20","男","吃");
        HashMap<String,String>wangwu=creatHashMap("王五","20","男","玩");
        HashMap<String,String>zhaoliu=creatHashMap("赵六","20","男","睡觉");
    }
    public HashMap<String,String>creatHashMap(String name,String age,String sex,String hobby){
        HashMap<String,String>zhangsan=new HashMap<>();
        zhangsan.put("name",name);
        zhangsan.put("sge",age);
        zhangsan.put("sex",sex);
        zhangsan.put("hobby",hobby);
        return zhangsan;
    }

}

SimpleCursorAdapter

把从数据库查出的数据适配给AdapterView

自定义Adapter(最重要最常用)

BaseAdapter5个方法

MVC模式

这里写图片描述
这里写图片描述

M是数据V是adapter中getview中的view C是listview
这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/img"
        android:layout_width="100dp"
        android:layout_height="100dp" />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名"
        android:layout_margin="10dp"/>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="年龄"/>

        <TextView
            android:id="@+id/sex"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别"/>
    </LinearLayout>
    <TextView
        android:id="@+id/hobby"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="爱好"
        android:layout_margin="10dp"/>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listview1">


    </ListView>

</LinearLayout>

这里写图片描述

StudentAdapter

public class StudentAdapter extends BaseAdapter {
    private List<Student> mData ;
    private LayoutInflater mInflater;


    public StudentAdapter( LayoutInflater Inflater,List<Student> data){
   //将inflater和数据传递到适配器
        mInflater=Inflater;
        mData=data;
    }
    @Override
    public int getCount() {
        //得到ListView将要显示的数据的条数
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        //返回索引
        return position;
    }

    @Override
    public long getItemId(int position) {
        //返回索引
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //LauoutInflater
        View view=mInflater.inflate(R.layout.list_simple_item,null);
        Student student=mData.get(position);
        TextView name= (TextView) view.findViewById(R.id.name);
        TextView age= (TextView) view.findViewById(R.id.age);
        TextView sex= (TextView) view.findViewById(R.id.sex);
        TextView hobby= (TextView) view.findViewById(R.id.hobby);
        ImageView img=(ImageView)view.findViewById(R.id.img);
        name.setText(student.getName());
        age.setText(student.getAge());
        sex.setText(student.getSex());
        hobby.setText(student.getHobby());
        img.setImageResource(student.getImg());
        return view;
    }
}

MyBaseAdapterActivity

public class MyBaseAdapterActivity extends AppCompatActivity {
    private ListView mListView;

    private List<Student> mData;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.listview);

        mListView=(ListView)findViewById(R.id.listview1);

        //LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
        LayoutInflater inflater=getLayoutInflater();

        initData();
        StudentAdapter adapter=new StudentAdapter( inflater,mData);
        mListView.setAdapter(adapter);
    }
    public void initData(){
        mData=new ArrayList<>();
        Student zhangsan=new Student("张三","21","男","打篮球",R.mipmap.baby);
        Student lisi=new Student("张三","21","男","打篮球",R.mipmap.baby);
        Student wangwu=new Student("张三","21","男","打篮球",R.mipmap.baby);
        Student zhaoliu=new Student("张三","21","男","打篮球",R.mipmap.baby);
        mData.add(zhangsan);
        mData.add(lisi);
        mData.add(wangwu);
        mData.add(zhaoliu);
    }
}

Student

public class Student extends HashMap<String, String> {
    private String name;
    private  String sex;
    private String age;
    private String hobby;
    private int img;

    public Student(String name,String sex,String age, String hobby,int img){
        this.name=name;
        this.age=age;
        this.sex=sex;
        this.hobby=hobby;
        this.img=img;

    }

    public int getImg() {
        return img;
    }

    public void setImg(int img) {
        this.img = img;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    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 String getAge() {
        return age;
    }

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

结果如下
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值