Android Studio 简易通讯录制作 (Java)

Android Studio 简易通讯录制作 (Java),第1张

通讯录首页:

Android Studio 简易通讯录制作 (Java),第2张

 添加联系人页面:

Android Studio 简易通讯录制作 (Java),第3张

 修改联系人:

Android Studio 简易通讯录制作 (Java),第4张

删除联系人:

Android Studio 简易通讯录制作 (Java),第5张

 程序代码:

MainActivity.java

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; import android.content.DialogInterface; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.Toast; import java.util.List;public class MainActivity extends AppCompatActivity{ private ImageView iv_add; private ListView lv_show; private EditText et_name,et_phone; private MyAdapter myAdapter; private DBHelper dbHelper; private List<User> userList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv_add = findViewById(R.id.iv_add); lv_show = findViewById(R.id.lv_show); if (userList != null) { userList.clear(); } dbHelper = new DBHelper(MainActivity.this, "user.db", null, 1); updateListView(); iv_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addData(); } }); lv_show.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { updateData(position); } }); lv_show.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { deleteData(position); return true; } }); } private void addData() { AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); View dialogView=View.inflate(MainActivity.this,R.layout.dialog,null); builder.setIcon(R.drawable.icon) .setTitle("添加联系人") .setView(dialogView); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { et_name=dialogView.findViewById(R.id.et_name); et_phone=dialogView.findViewById(R.id.et_pwd); String name=et_name.getText().toString(); String phone=et_phone.getText().toString(); if (phone.length()!=11){ showToast("电话号码长度不符合要求"); }else { User user=dbHelper.get(name); if (user.getName()==null){ if (dbHelper.insert(name,phone)){ showToast("添加成功"); updateListView(); }else{ showToast("添加失败"); } }else { showToast("该联系人已存在"); } } } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alertDialog=builder.create(); alertDialog.show(); } private void deleteData(int position) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.icon) .setTitle("提示") .setMessage("是否删除该联系人?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { User user = (User) myAdapter.getItem(position); String deleteId = user.getId(); if (dbHelper.delete(deleteId)) { updateListView(); showToast("删除成功"); } else { showToast("删除失败"); } } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); } private void updateData(int position) { View dialogView = View.inflate(MainActivity.this, R.layout.dialog, null); User user = (User) myAdapter.getItem(position); et_name = dialogView.findViewById(R.id.et_name); et_phone = dialogView.findViewById(R.id.et_pwd); et_name.setText(user.getName()); et_phone.setText(user.getPhone()); String findId = user.getId(); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.icon) .setTitle("修改联系人") .setView(dialogView) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String name = et_name.getText().toString(); String phone = et_phone.getText().toString(); if (phone.length()!=11){ showToast("电话号码长度不符合要求"); }else { User user=dbHelper.get(name); if (user.getName()==null){ if (dbHelper.update(findId,name,phone)){ showToast("修改成功"); updateListView(); }else{ showToast("修改失败"); } }else { showToast("该联系人已存在"); } } } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); } public void updateListView(){ userList=dbHelper.query(); myAdapter=new MyAdapter(userList,MainActivity.this); lv_show.setAdapter(myAdapter); } public void showToast(String msg){ Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show(); } }

MyAdapter.java

package com.example.myapplication;import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView;import java.util.List;public class MyAdapter extends BaseAdapter { //使用list<Nate>,list会存储数据库中note表所有记录。 private List<User> list; //用于将某个布局转换为view的对象。 private LayoutInflater layoutInflater; //当创建MyAdapter对象的时候,需要list的数据 public MyAdapter(List<User> list, Context context){ this.list=list; layoutInflater=LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView==null){ convertView=layoutInflater.inflate(R.layout.item,null,false); viewHolder=new ViewHolder(convertView); convertView.setTag(viewHolder); }else { viewHolder=(ViewHolder)convertView.getTag(); } //将数据库中的内容加载到对应的控件上 User user =(User) getItem(position); viewHolder.tv_showName.setText(user.getName()); viewHolder.tv_showPhone.setText(user.getPhone()); return convertView; } //用于给item的视图加载数据内容。 class ViewHolder{ TextView tv_showName,tv_showPhone; public ViewHolder(View view){ tv_showName=view.findViewById(R.id.tv_showName); tv_showPhone=view.findViewById(R.id.tv_showPhone); } } }

 DBHelper.java

package com.example.myapplication;import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;import androidx.annotation.Nullable;import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List;public class DBHelper extends SQLiteOpenHelper { private SQLiteDatabase db; ContentValues contentValues = new ContentValues(); public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); db=this.getWritableDatabase(); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table user(id integer primary key autoincrement,name text,phone text)"); } //添加数据 public boolean insert(String name,String phone) { contentValues.put("name", name); contentValues.put("phone", phone); long result = db.insert("user", null, contentValues); return result > 0 ? true : false; } public boolean delete(String id){ int result=db.delete("user","id=?",new String[]{id}); return result>0?true:false; } //修改数据,根据id进行修改 public boolean update(String id,String name,String phone){ contentValues.put("id",id); contentValues.put("name",name); contentValues.put("phone",phone); int result=db.update("user",contentValues,"id=?",new String[]{id}); return result>0?true:false; } //查询数据,查询表中的所有内容,将查询的内容用note的对象属性进行存储,并将该对象存入集合中。 public List<User> query(){ List<User> list=new ArrayList<>(); Cursor result=db.query("user",null,null,null, null,null,null,null); if (result!=null){ while (result.moveToNext()) { User user = new User(); user.setId(String.valueOf(result.getInt(0))); user.setName(result.getString(1)); //1即第二列,指内容 user.setPhone(result.getString(2)); //2即第三列,指时间 list.add(user); }result.close(); }return list; } public User get(String name) { User user=new User(); Cursor result=db.query("user",null,"name=?",new String[]{name}, null,null,null,null); if (result.getCount()==1){ result.moveToFirst(); user.setName(result.getString(1)); user.setPhone(result.getString(2)); return user; }else { user.setName(null); user.setPhone(null); return user; } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }

User.java

package com.example.myapplication;public class User { private String id; private String name; private String phone; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

 activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:orientation="vertical"    android:layout    android:layout    tools:context=".MainActivity">    <TextView        android:id="@+id/tv_title"        android:gravity="center"        android:textSize="25dp"        android:textColor="@color/B_group_1"        android:background="@color/B_group_3"        android:layout        android:layout        android:text="通讯录" />    <ListView        android:id="@+id/lv_show"        android:layout        android:layout        android:layout_below="@id/tv_title"        android:background="@color/B_group_4"        android:textColor="@color/B_group_1"></ListView>    <ImageView        android:id="@+id/iv_add"        android:layout_alignParentBottom="true"        android:layout_alignParentRight="true"        android:src="@drawable/add"        android:layout_margin="20dp"        android:layout        android:layout>    </ImageView> </RelativeLayout>

dialog.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:paddingTop="20dp"    android:paddingLeft="40dp"    android:paddingRight="40dp"    android:paddingBottom="20dp"    android:orientation="vertical"    android:layout    android:layout>    <TextView        android:id="@+id/tv_name"        android:text="姓名"        android:textSize="20dp"        android:textColor="@color/B_group_1"        android:layout        android:layout></TextView>    <EditText        android:id="@+id/et_name"        android:hint="请输入姓名"        android:layout        android:layout></EditText>    <TextView        android:id="@+id/tv_pwd"        android:text="电话"        android:textSize="20dp"        android:textColor="@color/B_group_1"        android:layout_marginTop="20dp"        android:layout        android:layout></TextView>    <EditText        android:id="@+id/et_pwd"        android:hint="请输入电话"        android:layout        android:layout></EditText> </LinearLayout>

 item.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout android:padding="10dp" android:orientation="horizontal" android:layout> <TextView android:id="@+id/tv_showName" android:textColor="@color/B_group_1" android:text="测试信息" android:layout_weight="1" android:textSize="20dp" android:layout android:layout> </TextView> <TextView android:id="@+id/tv_showPhone" android:text="1234566" android:layout_weight="2" android:inputType="number" android:layout android:layout> </TextView></LinearLayout>

colors.xml

<?xml version="1.0" encoding="utf-8"?> <resources>    <color name="purple_200">#FFBB86FC</color>    <color name="purple_500">#FF6200EE</color>    <color name="purple_700">#FF3700B3</color>    <color name="teal_200">#FF03DAC5</color>    <color name="teal_700">#FF018786</color>    <color name="black">#FF000000</color>    <color name="white">#FFFFFFFF</color>    <color name="B_group_1">#0B132B</color>    <color name="B_group_2">#A49DBE</color>    <color name="B_group_3">#D5CFE1</color>    <color name="B_group_4">#E9E7EF</color>    <color name="B_group_5">#D8C4C4</color> </resources>

 详细见:https://gitee.com/love1213/Android-Studio-Contacts.git

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/13518138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-12-31
下一篇 2024-01-04

发表评论

登录后才能评论

评论列表(0条)

保存