本文共 11021 字,大约阅读时间需要 36 分钟。
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 Listcontacts;//联系人列表(数据源) @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; }}
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 Listcontacts;//联系人列表 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; }}
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 Listcontacts;//联系人列表 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; }}
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/