ArrayAdapter,SimpleAdapter,BaseAdapter

前言:

不论哪一种adapter,首先要有一个list,相当于书架,分为一层一层的结构。

//在这个list中不要写其他东西
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.my.administrator.mywidget.MyListView">

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

</RelativeLayout>

这里写图片描述
并且在activity中要 setContentView(R.layout.activity_my_list_view);

1、ArrayAdapter

<1>先建一个layout_view

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.my.administrator.mywidget.MyListView">

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

</RelativeLayout>

<2>
在activity中
这里写图片描述
<3>layout>>item_list

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"//注意这个地址一定不能改
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:paddingTop="2dip"
    android:paddingBottom="3dip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#ff0000"//设置文本颜色
    />

<4>运行activity
这里写图片描述

2、SimpleAdapter

<1>list

//同上面例2的1代码

<2>layout下activity_list

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="20dp"
    android:gravity="center_vertical"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/list_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/list_age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="年龄" />

        <TextView
            android:id="@+id/list_sex"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别" />
    </LinearLayout>

    <TextView
        android:id="@+id/list_hobby"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="爱好" />

</LinearLayout>

这里写图片描述
<3>activity中部分代码

  private ListView mListerView;
    private List<HashMap<String,String>> mData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_list_view);
        mListerView = (ListView) findViewById(R.id.listview);
        initData();
        SimpleAdapter adapter = new SimpleAdapter(this,mData,R.layout.activity_list,new String[]{"name","age","sex","hobby"},
                new int[]{R.id.list_name,R.id.list_age,R.id.list_sex,R.id.list_hobby});
        mListerView.setAdapter(adapter);
        //下面是点击事件,不允许用OnClickLisnter
        mListerView.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")+itemData.get("age")+itemData.get("sex")+itemData.get("hobby"));
            }
        });
    }

    private void initData() {
        mData = new ArrayList<>();
        HashMap<String, String> zhangsan = creatHashMap("张三", "20", "男", "篮球");
        mData.add(zhangsan);
        HashMap<String, String> lisi = creatHashMap("李四", "20", "男", "爱好书法");
        mData.add(lisi);
        HashMap<String, String> wangwu = creatHashMap("王五", "20", "女", "爱好听歌");
        mData.add(wangwu);
    }

    private HashMap<String, String> creatHashMap(String name, String age, String sex, String hobby) {
        HashMap<String, String> zhangsan = new HashMap<>();
        zhangsan.put("name", name);
        zhangsan.put("age", age);
        zhangsan.put("sex", sex);
        zhangsan.put("hobby", hobby);
        return zhangsan;
    }

这里写图片描述

2、BaseAdapter

<1>同以上的步骤一代码
<2>在layout-list中添加ImageView

 <ImageView
    android:id="@+id/image"
    android:layout_width="100dp"
    android:layout_height="100dp" />

<3>新建包modle,在其下新建Student类

public class Student {
    private String name;
    private String age;
    private String sex;
    private String hobby;
    private int img;

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


    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }

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

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

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



    public int getImg() {
        return img;
    }

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

<4>新建包adapter,在其下新建StuAdapter

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

    public StudentAdapter(LayoutInflater inflater, List<Student> mData) {//构造器
        this.mInflater = inflater;
        this.mData = mData;
    }

    @Override
    public int getCount() {
        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) {//这个方法是关键
        View view = mInflater.inflate(R.layout.activity_list, null);//对应activity—list中的属性
        Student student = mData.get(position);
        ImageView imageView = (ImageView) view.findViewById(R.id.image);//付属性
        TextView textView_name = (TextView) view.findViewById(R.id.list_name);
        TextView textView_age = (TextView) view.findViewById(R.id.list_age);
        TextView textView_sex = (TextView) view.findViewById(R.id.list_sex);
        TextView textView_hobby = (TextView) view.findViewById(R.id.list_hobby);
        textView_name.setText(student.getName());//添加属性
        textView_age.setText(student.getAge());
        textView_sex.setText(student.getSex());
        textView_hobby.setText(student.getHobby());
        imageView.setImageResource(student.getImg());
        return view;
    }
}

<5>activity中的部分代码

public class MyListView extends AppCompatActivity {
    private ListView mListerView;
    private List<Student> mData;
    private StudentAdapter mStudentAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_list_view);
        mListerView = (ListView) findViewById(R.id.listview);
        LayoutInflater inflater = getLayoutInflater();
        initData();
        mStudentAdapter = new StudentAdapter(inflater, mData);
        mListerView.setAdapter(mStudentAdapter);
    }

    private void initData() {
        mData = new ArrayList<>();
        Student zhangsan = new Student("张三", "18", "男", "爱好篮球", R.mipmap.shuai);
        Student wanghong = new Student("王红", "22", "女", "爱好唱歌", R.mipmap.meinv);
        Student xiaoli = new Student("小丽", "22", "女", "爱好跳舞", R.mipmap.meinv2);
        mData.add(zhangsan);
        mData.add(wanghong);
        mData.add(xiaoli);
    }

最终界面
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值