博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
联系人
阅读量:3971 次
发布时间:2019-05-24

本文共 11021 字,大约阅读时间需要 36 分钟。

文章目录

创建安卓应用

在这里插入图片描述

将图片素材导入drawable

在这里插入图片描述

创建Congtact.java(联系人实体类)、CongtactAdapter.java(联系人列表)

在这里插入图片描述

创建联系人列表布局文件

在这里插入图片描述

编写布局文件activity_main.xml

编写主界面类

package net.zjs.ContactList;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView lvContact;//联系人列表控件(展示)    private ContactAdapter adapter;//联系人适配器(桥梁)    private List
contacts;//联系人列表(数据源) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //利用布局资源文件设置用户界面 setContentView(R.layout.activity_main); //通过资源标识符获取控件实例 lvContact=findViewById(R.id.lvContact); //获取联系人数据作为数据源 contacts=getContacts(); //创建联系人适配器 adapter=new ContactAdapter(this,contacts); //给联系人列表控件设置适配器 lvContact.setAdapter(adapter); //给列表控件注册监听器 lvContact.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { //获取联系人数据 Contact contact=contacts.get(position); //弹出吐司提示用户 Toast.makeText(MainActivity.this, contact.getContactName()+":" +contact.getContactPhone(), Toast.LENGTH_SHORT).show(); } }); } /* * 联系人列表 * */ private List
getContacts() { //创建联系人列表 List
contacts=new ArrayList<>(); //声明联系人 Contact contact=null; //创建第一个联系人 contact=new Contact(); contact.setContactIcon(R.drawable.img1); contact.setContactName("lisa"); contact.setContactPhone("12345678987"); //将联系人添加到联系人列表 contacts.add(contact); //创建第二个联系人 contact=new Contact(); contact.setContactIcon(R.drawable.img2); contact.setContactName("甄氏秀"); contact.setContactPhone("12345678987"); //将联系人添加到联系人列表 contacts.add(contact); //创建第三个联系人 contact=new Contact(); contact.setContactIcon(R.drawable.img3); contact.setContactName("王美丽"); contact.setContactPhone("12345678987"); //将联系人添加到联系人列表 contacts.add(contact); //创建第4个联系人 contact=new Contact(); contact.setContactIcon(R.drawable.img4); contact.setContactName("钱珍朵"); contact.setContactPhone("12345678987"); //将联系人添加到联系人列表 contacts.add(contact); //创建第5个联系人 contact=new Contact(); contact.setContactIcon(R.drawable.img5); contact.setContactName("马大哈"); contact.setContactPhone("12345678987"); //将联系人添加到联系人列表 contacts.add(contact); //返回联系人列表 return contacts; }}

编写ContactAdapter.java

package net.zjs.ContactList;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * 功能: * 作者:zjs * 日期:2020年月13日 */public class ContactAdapter extends BaseAdapter {    private Context context;//上下文    private List
contacts;//联系人列表 public ContactAdapter(Context context,List
contacts){ this.context=context; this.contacts=contacts; } /* * 列表项个数 * */ @Override public int getCount() { return contacts.size(); } /* * id * 列表项 * */ @Override public Object getItem(int id) { return contacts.get(id); } /*列表项标识*/ @Override public long getItemId(int id) { return id; } /* * 列表项视图 * */ @Override public View getView(int id, View view, ViewGroup parent) { //声明视图容器 ViewHolder holder; //判断列表项视图是否为空 if(view==null){ //利用布局填充器列表项模板转换成列表项视图 view= LayoutInflater.from(context).inflate(R.layout.contact_item_list,null); //创建视图容器 holder=new ViewHolder(); //获取视图容器里的控件实例 holder.ivContactIcon=view.findViewById(R.id.ivContactIcon); holder.tvContactName=view.findViewById(R.id.tvContactName); holder.tvContactPhone=view.findViewById(R.id.tvContactPhone); //将视图容器附加到列表项视图 view.setTag(holder); }else{ //直接从列表项视图里获取视图容器 holder=(ViewHolder) view.getTag(); }// //从列表项视图通过资源标识符获取控件实例// ImageView ivContactIcon=view.findViewById(R.id.ivContactIcon);// TextView tvContactName=view.findViewById(R.id.tvContactName);// TextView tvContactPhone=view.findViewById(R.id.tvContactPhone); //获取列表项要显示的列表控件 Contact contact=contacts.get(id); //利用联系人数据设置列表视图的三个控件// ivContactIcon.setImageResource(contact.getContactIcon());// tvContactName.setText(contact.getContactName());// tvContactPhone.setText(contact.getContactPhone()); holder.ivContactIcon.setImageResource(contact.getContactIcon()); holder.tvContactName.setText(contact.getContactName()); holder.tvContactPhone.setText(contact.getContactPhone()); //返回列表项视图 return view; } /* * 视图容器 * */ private static class ViewHolder{ ImageView ivContactIcon; TextView tvContactName; TextView tvContactPhone; }}

编写Contact.java

package net.zjs.ContactList;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * 功能: * 作者:zjs * 日期:2020年月13日 */public class ContactAdapter extends BaseAdapter {    private Context context;//上下文    private List
contacts;//联系人列表 public ContactAdapter(Context context,List
contacts){ this.context=context; this.contacts=contacts; } /* * 列表项个数 * */ @Override public int getCount() { return contacts.size(); } /* * id * 列表项 * */ @Override public Object getItem(int id) { return contacts.get(id); } /*列表项标识*/ @Override public long getItemId(int id) { return id; } /* * 列表项视图 * */ @Override public View getView(int id, View view, ViewGroup parent) { //声明视图容器 ViewHolder holder; //判断列表项视图是否为空 if(view==null){ //利用布局填充器列表项模板转换成列表项视图 view= LayoutInflater.from(context).inflate(R.layout.contact_item_list,null); //创建视图容器 holder=new ViewHolder(); //获取视图容器里的控件实例 holder.ivContactIcon=view.findViewById(R.id.ivContactIcon); holder.tvContactName=view.findViewById(R.id.tvContactName); holder.tvContactPhone=view.findViewById(R.id.tvContactPhone); //将视图容器附加到列表项视图 view.setTag(holder); }else{ //直接从列表项视图里获取视图容器 holder=(ViewHolder) view.getTag(); }// //从列表项视图通过资源标识符获取控件实例// ImageView ivContactIcon=view.findViewById(R.id.ivContactIcon);// TextView tvContactName=view.findViewById(R.id.tvContactName);// TextView tvContactPhone=view.findViewById(R.id.tvContactPhone); //获取列表项要显示的列表控件 Contact contact=contacts.get(id); //利用联系人数据设置列表视图的三个控件// ivContactIcon.setImageResource(contact.getContactIcon());// tvContactName.setText(contact.getContactName());// tvContactPhone.setText(contact.getContactPhone()); holder.ivContactIcon.setImageResource(contact.getContactIcon()); holder.tvContactName.setText(contact.getContactName()); holder.tvContactPhone.setText(contact.getContactPhone()); //返回列表项视图 return view; } /* * 视图容器 * */ private static class ViewHolder{ ImageView ivContactIcon; TextView tvContactName; TextView tvContactPhone; }}

查看效果

在这里插入图片描述

通讯录(在联系人之前加图标)

创建安卓应用

在这里插入图片描述

将图片素材放入drawable

在这里插入图片描述

创建contact_list_item.xml

在这里插入图片描述

编写activity_main.xml

在这里插入图片描述

编写主界面类

在这里插入图片描述

package net.zjs.contats;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView lvContact;//联系人列表控件(展示的控件)    private List
> contacts;//联系人列表(数据源) private SimpleAdapter adapter;//简单适配器(联系的桥梁) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //利用布局资源文件设置用户界面 setContentView(R.layout.activity_main); //通过资源标识符获取控件实例 lvContact=findViewById(R.id.lvContact); //初始化联系人列表(数据源) contacts=getContacts(); //创建简单适配器作为桥梁 adapter=new SimpleAdapter(this,//上下文 contacts,//数据源(列表) R.layout.contact_list_item,//列表项模板 new String[]{"icon","name","phone"},//字段名/数组 new int[]{R.id.ivIcon,R.id.tvName,R.id.tvPhone}//控件标识数组 ); //给列表控件设置适配器 lvContact.setAdapter(adapter); } //定义一个gercontacts方法(联系人列表) private List
> getContacts() { //声明联系人列表 List
> contacts=new ArrayList<>(); //声明联系人 HashMap
contact=null; //创建第一个联系人 contact=new HashMap<>(); contact.put("icon",R.drawable.img1); contact.put("name","张三"); contact.put("phone","18283792232"); //将联系人添加到联系人列表 contacts.add(contact); //创建第二个联系人 contact=new HashMap<>(); contact.put("icon",R.drawable.img2); contact.put("name","李四"); contact.put("phone","18283792232"); //将联系人添加到联系人列表 contacts.add(contact); //创建第三个联系人 contact=new HashMap<>(); contact.put("icon",R.drawable.img3); contact.put("name","王五"); contact.put("phone","18283792232"); //将联系人添加到联系人列表 contacts.add(contact); //创建第四个联系人 contact=new HashMap<>(); contact.put("icon",R.drawable.img4); contact.put("name","小米"); contact.put("phone","18283792232"); //将联系人添加到联系人列表 contacts.add(contact); //创建第五个联系人 contact=new HashMap<>(); contact.put("icon",R.drawable.img5); contact.put("name","撒旦"); contact.put("phone","18283792232"); //将联系人添加到联系人列表 contacts.add(contact); //创建第六个联系人 contact=new HashMap<>(); contact.put("icon",R.drawable.img6); contact.put("name","史蒂芬"); contact.put("phone","18283792232"); //将联系人添加到联系人列表 contacts.add(contact); //创建第七个联系人 contact=new HashMap<>(); contact.put("icon",R.drawable.img7); contact.put("name","seven"); contact.put("phone","18283792232"); //将联系人添加到联系人列表 contacts.add(contact); //返回联系人列表 return contacts; }}

运行效果

在这里插入图片描述

转载地址:http://pjtki.baihongyu.com/

你可能感兴趣的文章
稳压、调压、监控、DC/DC电路大全
查看>>
放大电路的主要性能指标?
查看>>
运放电压和电流负反馈的讨论
查看>>
运放自激问题
查看>>
运放电压和电流负反馈的讨论
查看>>
终于&nbsp;整明白了中断的工作原…
查看>>
终于&nbsp;整明白了中断的工作原…
查看>>
终于&nbsp;整明白了中断的工作原…
查看>>
终于&nbsp;整明白了中断的工作原…
查看>>
2010年11月19日
查看>>
2010年11月19日
查看>>
TC35i&nbsp;单片机
查看>>
TC35i&nbsp;单片机
查看>>
AT&nbsp;命令详解
查看>>
AT&nbsp;命令详解
查看>>
AT指令发送PDU中文短信——使用串口…
查看>>
AT指令发送PDU中文短信——使用串口…
查看>>
指针的使用注意事项(个人体…
查看>>
指针的使用注意事项(个人体…
查看>>
~c++中的指针使用注意事项
查看>>