Android使用ListView实现通讯录并能拨号的代码和布局示例
时间: 2024-02-18 07:05:47 浏览: 205
Android中ListView下拉刷新的实现方法实例分析
以下是一个简单的Android ListView实现通讯录并能拨号的代码示例:
布局文件main_activity.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">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
```
通讯录列表项布局文件list_item_contact.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="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/contactName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Contact Name"
android:textSize="18sp" />
<TextView
android:id="@+id/contactPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/contactName"
android:text="Contact Phone"
android:textSize="16sp" />
<Button
android:id="@+id/callButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:text="Call" />
</RelativeLayout>
```
Activity代码:
```
public class MainActivity extends AppCompatActivity {
private ListView listView;
private List<Contact> contacts;
private ContactListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
// 初始化联系人列表
contacts = new ArrayList<>();
contacts.add(new Contact("John", "123456789"));
contacts.add(new Contact("David", "987654321"));
contacts.add(new Contact("Mary", "555555555"));
adapter = new ContactListAdapter(this, contacts);
listView.setAdapter(adapter);
}
private class ContactListAdapter extends ArrayAdapter<Contact> {
public ContactListAdapter(Context context, List<Contact> contacts) {
super(context, 0, contacts);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_contact, parent, false);
}
// 获取联系人数据
final Contact contact = getItem(position);
// 显示联系人名字和电话号码
TextView contactName = convertView.findViewById(R.id.contactName);
contactName.setText(contact.getName());
TextView contactPhone = convertView.findViewById(R.id.contactPhone);
contactPhone.setText(contact.getPhone());
// 设置拨号按钮的点击事件
Button callButton = convertView.findViewById(R.id.callButton);
callButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 拨打电话
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + contact.getPhone()));
startActivity(intent);
}
});
return convertView;
}
}
private class Contact {
private String name;
private String phone;
public Contact(String name, String phone) {
this.name = name;
this.phone = phone;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
}
}
```
这个示例中,我们创建了一个名为Contact的简单数据模型,并使用一个包含联系人名字和电话号码的布局文件来显示每个联系人的信息。我们还在适配器中添加了一个拨号按钮的点击事件,以便用户能够拨打所选联系人的电话号码。
阅读全文