Android 自定义适配器ListView 实现打电话

本文介绍了一个简单的Android应用,该应用展示了一个联系人列表,并实现了点击拨打电话的功能。通过使用BaseAdapter自定义适配器,文章详细展示了如何加载布局、初始化数据及监听器等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


先布局好,然后在来写MainActivity,然后在一步步实现,

   实现适配器的接口 BaseAdapter

  建一个person类   联系人实体类  



import java.util.ArrayList;
import java.util.List;


import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.telephony.PhoneNumberUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity implements InitInterface{
private ListView lv_constact;
private List<Person> persons;
private Button bt_call;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initView();
initData();
initListener();
}
@Override
public void initView() {
lv_constact=(ListView) this.findViewById(R.id.lv_constact);
Button bt_call = (Button)findViewById(R.id.bt_call);
final TextView tv_phone = (TextView) this.findViewById(R.id.tv_phone);



lv_constact.setOnItemClickListener(new OnItemClickListener() { 
//. String phoneNumber = tv_phone.getText().toString().trim();
                       @Override
                       
                       public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
                            
// TODO Auto-generated method stub
                             
                              
                        startActivity(new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+tv_phone)));
                       }
               });
                             
           
}




@Override
public void initData() {
persons = initPeronData();
MyAdapter myAdapter= new MyAdapter();
lv_constact.setAdapter(myAdapter);
}
/*
* 创建联系人集合
* */
private List<Person> initPeronData() {
List<Person> persons = new ArrayList<Person>();
Person p1= new Person(R.drawable.face1,"大左" ,"15575654432");
persons.add(p1);
Person p2= new Person(R.drawable.face2,"西瓜" ,"15572221142");
persons.add(p2);
Person p3= new Person(R.drawable.face3,"老谭" ,"15576506642");
persons.add(p3);
Person p4= new Person(R.drawable.face4,"丽煌" ,"15578801142");
persons.add(p4);
Person p5= new Person(R.drawable.face5,"老刘" ,"15512341222");
persons.add(p5);
Person p6= new Person(R.drawable.face6,"老刘" ,"15571621823");
persons.add(p6);
Person p7= new Person(R.drawable.face7,"小王" ,"15573401142");
persons.add(p7);
Person p8= new Person(R.drawable.face8,"小左" ,"15571201242");
persons.add(p8);

return persons;
}
@Override
public void initListener() {

}

public class MyAdapter extends BaseAdapter {

/**
* 这个方法是给框架调用
* 必修要重写这个方法
* */
@Override
public int getCount() {
// TODO Auto-generated method stub
return persons.size();
}
/*
* 返回具体条目对象
* position 当前条目下标
* */
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return persons.get(position);
}
/*
* 返回条目的下标

* */
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
/*
* getView() 返回具体条目的视图
* 也是框架需要的调用的
* */
@Override
public View getView(int position, View converView, ViewGroup parent) {
// 
LayoutInflater layoutInflater= MainActivity.this.getLayoutInflater();
//LayoutInflater layoutInflater= (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v= layoutInflater.inflate(R.layout.list_item, null);
//找控件
ImageView iv_icon= (ImageView) v.findViewById(R.id.iv_icon);
TextView tv_name= (TextView) v.findViewById(R.id.tv_name);
TextView tv_phone= (TextView) v.findViewById(R.id.tv_phone);
Person person= persons.get(position); 
//设置数据
iv_icon.setImageResource(person.getIcon());
tv_name.setText(person.getName());
tv_phone.setText(person.getPhone());
return v;
}
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值