android studio通讯录制作代码

时间: 2023-07-28 13:39:04 浏览: 83
以下是一个简单的Android Studio通讯录应用程序的制作代码示例,其中包括SQLite数据库的使用和基本的CRUD操作: 1. 首先,创建一个新的Android Studio项目,并在应用程序中添加以下依赖项: ``` dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.navigation:navigation-fragment:2.3.5' implementation 'androidx.navigation:navigation-ui:2.3.5' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.room:room-runtime:2.3.0' annotationProcessor 'androidx.room:room-compiler:2.3.0' } ``` 2. 在应用程序中创建一个名为"Contact"的Java类,该类表示一个联系人对象,包括以下属性:姓名,电话号码和电子邮件地址。例如: ``` public class Contact { private int id; private String name; private String phone; private String email; public Contact(int id, String name, String phone, String email) { this.id = id; this.name = name; this.phone = phone; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` 3. 创建一个SQLiteOpenHelper类,用于创建和管理SQLite数据库。例如: ``` public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "contacts.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "contacts"; private static final String COLUMN_ID = "id"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_PHONE = "phone"; private static final String COLUMN_EMAIL = "email"; private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME + " TEXT," + COLUMN_PHONE + " TEXT," + COLUMN_EMAIL + " TEXT" + ")"; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } } ``` 4. 创建一个ContactDAO类,用于定义与数据库交互的所有方法。例如: ``` public class ContactDAO { private SQLiteDatabase database; private DatabaseHelper dbHelper; public ContactDAO(Context context) { dbHelper = new DatabaseHelper(context); } public void open() throws SQLException { database = dbHelper.getWritableDatabase(); } public void close() { dbHelper.close(); } public void addContact(Contact contact) { ContentValues values = new ContentValues(); values.put(DatabaseHelper.COLUMN_NAME, contact.getName()); values.put(DatabaseHelper.COLUMN_PHONE, contact.getPhone()); values.put(DatabaseHelper.COLUMN_EMAIL, contact.getEmail()); database.insert(DatabaseHelper.TABLE_NAME, null, values); } public void updateContact(Contact contact) { ContentValues values = new ContentValues(); values.put(DatabaseHelper.COLUMN_NAME, contact.getName()); values.put(DatabaseHelper.COLUMN_PHONE, contact.getPhone()); values.put(DatabaseHelper.COLUMN_EMAIL, contact.getEmail()); database.update(DatabaseHelper.TABLE_NAME, values, DatabaseHelper.COLUMN_ID + " = ?", new String[] { String.valueOf(contact.getId()) }); } public void deleteContact(Contact contact) { database.delete(DatabaseHelper.TABLE_NAME, DatabaseHelper.COLUMN_ID + " = ?", new String[] { String.valueOf(contact.getId()) }); } public List<Contact> getAllContacts() { List<Contact> contacts = new ArrayList<>(); Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, new String[] { DatabaseHelper.COLUMN_ID, DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_PHONE, DatabaseHelper.COLUMN_EMAIL }, null, null, null, null, null); if (cursor.moveToFirst()) { do { Contact contact = new Contact( cursor.getInt(cursor.getColumnIndex(DatabaseHelper.COLUMN_ID)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_NAME)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_PHONE)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_EMAIL)) ); contacts.add(contact); } while (cursor.moveToNext()); } cursor.close(); return contacts; } public Contact getContactById(int id) { Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, new String[] { DatabaseHelper.COLUMN_ID, DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_PHONE, DatabaseHelper.COLUMN_EMAIL }, DatabaseHelper.COLUMN_ID + " = ?", new String[] { String.valueOf(id) }, null, null, null); Contact contact = null; if (cursor.moveToFirst()) { contact = new Contact( cursor.getInt(cursor.getColumnIndex(DatabaseHelper.COLUMN_ID)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_NAME)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_PHONE)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_EMAIL)) ); } cursor.close(); return contact; } } ``` 5. 创建MainActivity类,用于显示所有联系人的列表视图。例如: ``` public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private ContactAdapter adapter; private List<Contact> contacts = new ArrayList<>(); private ContactDAO contactDAO; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new ContactAdapter(this, contacts); recyclerView.setAdapter(adapter); contactDAO = new ContactDAO(this); contactDAO.open(); contacts.addAll(contactDAO.getAllContacts()); adapter.notifyDataSetChanged(); } @Override protected void onDestroy() { super.onDestroy(); contactDAO.close(); } public void addContact(View view) { Intent intent = new Intent(this, AddContactActivity.class); startActivity(intent); } public void editContact(View view) { int position = recyclerView.getChildAdapterPosition(view); Contact contact = contacts.get(position); Intent intent = new Intent(this, EditContactActivity.class); intent.putExtra("id", contact.getId()); startActivity(intent); } public void deleteContact(View view) { int position = recyclerView.getChildAdapterPosition(view); Contact contact = contacts.get(position); contactDAO.deleteContact(contact); contacts.remove(contact); adapter.notifyItemRemoved(position); } } ``` 6. 创建一个ContactAdapter类,用于将联系人列表显示为RecyclerView。例如: ``` public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ViewHolder> { private List<Contact> contacts; private LayoutInflater inflater; public ContactAdapter(Context context, List<Contact> contacts) { this.contacts = contacts; this.inflater = LayoutInflater.from(context); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.contact_item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Contact contact = contacts.get(position); holder.nameTextView.setText(contact.getName()); holder.phoneTextView.setText(contact.getPhone()); holder.emailTextView.setText(contact.getEmail()); } @Override public int getItemCount() { return contacts.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { public TextView nameTextView; public TextView phoneTextView; public TextView emailTextView; public ViewHolder(View itemView) { super(itemView); nameTextView = itemView.findViewById(R.id.name_text_view); phoneTextView = itemView.findViewById(R.id.phone_text_view); emailTextView = itemView.findViewById(R.id.email_text_view); } } } ``` 7. 创建AddContactActivity类,用于处理添加新联系人的表单。例如: ``` public class AddContactActivity extends AppCompatActivity { private ContactDAO contactDAO; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_contact); contactDAO = new ContactDAO(this); contactDAO.open(); } @Override protected void onDestroy() { super.onDestroy(); contactDAO.close(); } public void saveContact(View view) { EditText nameEditText = findViewById(R.id.name_edit_text); EditText phoneEditText = findViewById(R.id.phone_edit_text); EditText emailEditText = findViewById(R.id.email_edit_text); String name = nameEditText.getText().toString(); String phone = phoneEditText.getText().toString(); String email = emailEditText.getText().toString(); Contact contact = new Contact(0, name, phone, email); contactDAO.addContact(contact); finish(); } } ``` 8. 最后,创建布局文件和其他必要的资源文件。 以上是一个简单的Android Studio通讯录应用程序的制作代码示例。希望这些信息可以帮助您开始开发您自己的通讯录应用程序。

相关推荐

最新推荐

recommend-type

解决Android Studio 代码自动提示突然失效的问题

主要介绍了解决Android Studio 代码自动提示突然失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

解决Android Studio 代码无提示无颜色区分问题

主要介绍了解决Android Studio 代码无提示无颜色区分问题,需要的朋友可以参考下
recommend-type

解决Android Studio 格式化 Format代码快捷键问题

主要介绍了解决Android Studio 格式化 Format代码快捷键问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

Android Studio 利用Splash制作APP启动界面的方法

主要介绍了Android Studio 利用Splash制作APP启动界面,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Android studio 混淆配置详解

studio 使用Proguard进行混淆,其是一个压缩、优化和混淆java字节码文件的一个工具。 功能:Shrinking(压缩)、Optimization(优化)、Obfuscattion(混淆)、Preverification(预校验)四个操作。 优点: 1.删除项目无用的...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。