Android ListView Adapter(ArrayAdapter数据适配器)构建 通讯录

发布时间:2018-06-12作者:laosun阅读(4206)

Android

    使用ArrayAdapter数据适配器构建通讯录样式,如下所示:

    image.png

    直接上代码,其余的参数详情自己去搜索一下即可

    activity_main.xml 文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:id="@+id/tv_tab"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:gravity="center"
            android:text="通讯录展示" />
    
        <View
            android:id="@+id/hlfgx"
            android:layout_below="@+id/tv_tab"
            android:layout_width="match_parent"
            android:layout_height="2dp"
            android:background="#c0c0c0"></View>
    
        <!--
        android:divider="#f9b68b"  //分割线颜色
        android:dividerHeight="1dp"  //分割线边距
        android:scrollbars="none"  //不显示滚动条
        android:fadingEdge="none"   去掉上边和下边黑色的阴影
        -->
        <ListView
            android:id="@+id/contacts_list"
            android:layout_below="@+id/hlfgx"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="#c0c0c0"
            android:dividerHeight="1dp"></ListView>
    </RelativeLayout>

    创建listview_contact.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/lv_c"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp">
    
        <!--
        设置View的最大高度,单独使用无效,需要与setAdjustViewBounds一起使用。
        如果想设置图片固定大小,又想保持图片宽高比,需要如下设置:
        1) 设置setAdjustViewBounds为true;
        2) 设置maxWidth、MaxHeight;
        3) 设置设置layout_width和layout_height为wrap_content。
        -->
        <ImageView
            android:id="@+id/avatar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="15dp"
            android:adjustViewBounds="true"
            android:maxHeight="48dp"
            android:maxWidth="48dp"
            android:src="@drawable/ad" />
    
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/avatar"
            android:layout_alignTop="@+id/avatar"/>
    
        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/avatar"
            android:layout_alignBottom="@+id/avatar"/>
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="操作"/>
    
    </RelativeLayout>

    创建java对象类,Contacts.java

    /**
     * Created by lw on 2017/4/14.
     */
    
    public class Contacts {
        private String avatar;
        private String name;
        private String phone;
    
        public Contacts(String avatar, String name, String phone) {
            this.avatar = avatar;
            this.name = name;
            this.phone = phone;
        }
    
        public String getAvatar() {
            return avatar;
        }
    
        public void setAvatar(String avatar) {
            this.avatar = avatar;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    }

    自定义 ContactsAdapter

    import android.content.Context;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.util.List;
    /**
     * Created by sun on 2018/6/4.
     */
    public class ContactsAdapter extends ArrayAdapter {
    
        private final int resourceId;
    
        public ContactsAdapter(Context context, int resourceId, List<Contacts> objects) {
            super(context, resourceId, objects);
            this.resourceId = resourceId;
        }
    
        /**
         * 重写getView方法
         * @param position
         * @param convertView
         * @param parent
         * @return
         */
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Log.i("sunjs_","position:"+position);
            Contacts fruit = (Contacts) getItem(position); // 获取当前项的Fruit实例
            View view = LayoutInflater.from(getContext()).inflate(resourceId, null);//实例化一个对象
    
            //放入图片
            ImageView iv = (ImageView) view.findViewById(R.id.avatar);
            iv.setBackgroundResource(R.drawable.ad);
    
            //设置名称
            TextView fruitName = (TextView) view.findViewById(R.id.name);
            fruitName.setText(fruit.getName());
    
            //设置手机号
            TextView fruitPhone = (TextView) view.findViewById(R.id.phone);
            fruitPhone.setText(fruit.getPhone());
            return view;
        }
    }

    MainActivity 中修改一下

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ListView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        private List<Contacts> cList = new ArrayList<Contacts>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initContacts(); // 初始化水果数据
            ContactsAdapter adapter = new ContactsAdapter(MainActivity.this, R.layout.listview_contact, cList);
            ListView listView = (ListView) findViewById(R.id.contacts_list);
            listView.setAdapter(adapter);
    
        }
        private void initContacts() {
            for(int i=0;i<20;i++){
                Contacts a1 = new Contacts(null, "赵先生", "18912345678");
                cList.add(a1);
                Contacts a2 = new Contacts(null, "钱老师", "18912345678");
                cList.add(a2);
                Contacts a3 = new Contacts(null, "孙大圣", "18912345678");
                cList.add(a3);
                Contacts a4 = new Contacts(null, "李小姐", "18912345678");
                cList.add(a4);
                Contacts a5 = new Contacts(null, "周将军", "18912345678");
                cList.add(a5);
            }
        }
    }


2 +1

版权声明

 源码  android

 请文明留言

0 条评论