Android电话本实现

Android电话本实现

  • 需求
  • 效果
    • 添加联系人
    • 删除联系人
    • 查询联系人
    • 修改联系人
    • 拨打电
  • 部分实现代码
    • 数据库
    • 添加联系人
      • 布局
      • 限制添加长度
      • 添加页面
        • 布局
        • 代码
    • 删除联系人
    • 查询联系人
    • 修改联系人和拨打电话页面
    • 主页面
      • 布局
      • 代码
  • 完整项目链接

完整项目下载链接

需求

可以实现联系人的增删改查
可以实现电话的拨打
采用内置数据库

效果

添加联系人

删除联系人

查询联系人

Android电话本实现_第1张图片

修改联系人

拨打电

部分实现代码

数据库

//创建数据库
public class MyHelper extends SQLiteOpenHelper {
     
    public MyHelper(Context context)
    {
     
        super(context,"itcast.db",null,2);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
     
        db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),tels INTEGER)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
     

    }

添加联系人

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/back7"
        android:gravity="center">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="30dp"
            android:paddingTop="20dp"
            android:background="#99404348"
            android:gravity="center">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="AddressBook"
                android:textColor="#FFFFFF"
                android:textSize="18sp"/>-
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingBottom="20dp"
            android:paddingTop="20dp"
            android:background="#99000000">
            <EditText
                android:id="@+id/etName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:layout_gravity="center"
                android:layout_marginRight="50dp"
                android:layout_marginLeft="50dp"
                android:textColor="#FFFFFF"
                android:textColorHint="#9F9FA0"
                android:hint="Name"/>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dip"
                android:background="#83738F"
                android:layout_marginRight="40dp"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="5dp"></View>

            <EditText
                android:id="@+id/etNumber"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:layout_gravity="center"
                android:hint="Number"
                android:textColor="#FFFFFF"
                android:textColorHint="#9F9FA0"
                android:layout_marginLeft="50dp"
                android:layout_marginRight="50dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="30dp"
            android:paddingTop="20dp"
            android:background="#99404348"
            android:gravity="center"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="请输入姓名和电话号码"
                android:textColor="#DDDDDD"
                android:textSize="15sp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="©青素"
                android:textColor="#FFFFFF"
                android:textSize="15sp"/>
        </LinearLayout>




        <com.spark.submitbutton.SubmitButton
            android:id="@+id/btnSave"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:sub_btn_tick_color="@color/white"
            android:text="保存联系人"
            android:textSize="15sp"
            android:textColor="@color/white"
            app:sub_btn_duration="3000" />


    </LinearLayout>

</LinearLayout>

限制添加长度

import android.content.Context;
import android.text.Editable;
import android.text.Selection;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.Toast;


//保证电话号码不超过11位 姓名不超过8个字符
public class MaxLengthWatcher implements TextWatcher {
     

    private int maxLen = 0;
    private EditText editText = null;
    private Context context=null;

    public MaxLengthWatcher(int maxLen, EditText editText, Context context) {
     
        this.maxLen = maxLen;
        this.editText = editText;
        this.context=context;

    }



    public void afterTextChanged(Editable arg0) {
     
        // TODO Auto-generated method stub

    }



    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {
     

        // TODO Auto-generated method stub



    }



    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
     

        // TODO Auto-generated method stub

        Editable editable = editText.getText();
        int len = editable.length();



        if(len > maxLen)

        {
     
            int selEndIndex = Selection.getSelectionEnd(editable);
            String str = editable.toString();
            //截取新字符串
            String newStr = str.substring(0,maxLen);
            editText.setText(newStr);
            editable = editText.getText();
            //新字符串的长度
            int newLen = editable.length();
            //旧光标位置超过字符串长度
            if(selEndIndex > newLen)
            {
     
                selEndIndex = editable.length();
                //防止吐司出现应用程序名称提示
                Toast toast=Toast.makeText(context,"不能超过"+newLen+"字符长度",Toast.LENGTH_LONG);
                toast.setText("不能超过"+newLen+"字符长度");
                toast.show();

           }

            //设置新光标所在的位置
            Selection.setSelection(editable, selEndIndex);
        }
    }



}

添加页面

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/back7"
        android:gravity="center">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="30dp"
            android:paddingTop="20dp"
            android:background="#99404348"
            android:gravity="center">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="AddressBook"
                android:textColor="#FFFFFF"
                android:textSize="18sp"/>-
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingBottom="20dp"
            android:paddingTop="20dp"
            android:background="#99000000">
            <EditText
                android:id="@+id/etName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:layout_gravity="center"
                android:layout_marginRight="50dp"
                android:layout_marginLeft="50dp"
                android:textColor="#FFFFFF"
                android:textColorHint="#9F9FA0"
                android:hint="Name"/>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dip"
                android:background="#83738F"
                android:layout_marginRight="40dp"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="5dp"></View>

            <EditText
                android:id="@+id/etNumber"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:layout_gravity="center"
                android:hint="Number"
                android:textColor="#FFFFFF"
                android:textColorHint="#9F9FA0"
                android:layout_marginLeft="50dp"
                android:layout_marginRight="50dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="30dp"
            android:paddingTop="20dp"
            android:background="#99404348"
            android:gravity="center"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="请输入姓名和电话号码"
                android:textColor="#DDDDDD"
                android:textSize="15sp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="©青素"
                android:textColor="#FFFFFF"
                android:textSize="15sp"/>
        </LinearLayout>




        <com.spark.submitbutton.SubmitButton
            android:id="@+id/btnSave"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:sub_btn_tick_color="@color/white"
            android:text="保存联系人"
            android:textSize="15sp"
            android:textColor="@color/white"
            app:sub_btn_duration="3000" />


    </LinearLayout>

</LinearLayout>

代码

import android.Manifest;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import com.spark.submitbutton.SubmitButton;

public class Tels_new extends AppCompatActivity {
     
private EditText etNameOne,etTelNumberOne;
private SubmitButton  saveABook;
private String name,phone;
private MyHelper myHelper;
private SQLiteDatabase db;
private ContentValues values;
private int  WRITE_EXTERNAL_STORAGE_REQUEST_CODE=1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tels_new);
        //隐藏Toolbar的返回箭头
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        myHelper=new MyHelper(this);
        etNameOne=(EditText)findViewById(R.id.etName);
        etTelNumberOne=(EditText)findViewById(R.id.etNumber);
        saveABook=(SubmitButton) findViewById(R.id.btnSave);
        //监测
        etNameOne.addTextChangedListener(new MaxLengthWatcher(8,etNameOne,this));
        etTelNumberOne.addTextChangedListener(new MaxLengthWatcher(11,etTelNumberOne,this));


        if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
     
            //申请WRITE_EXTERNAL_STORAGE权限
            ActivityCompat.requestPermissions(this, new String[]{
     Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    WRITE_EXTERNAL_STORAGE_REQUEST_CODE); }


        //保存按钮 点击保存
        saveABook.setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     
                SaveABook();
            }
        });
    }

    @Override
    //权限获取回调
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
    {
     
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        doNext(requestCode,grantResults);
    }

    //自己用肯定给 先放起来 啥也不干
    private void doNext(int requestCode, int[] grantResults)
    {
     
        if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE)
        {
     
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
     
            } else {
     
            }
        }
    }



    //保存联系人
    void SaveABook(){
     
        name=etNameOne.getText().toString();
        phone=etTelNumberOne.getText().toString();

        db=myHelper.getWritableDatabase();
        values=new ContentValues();
        values.put("name",name);
        values.put("tels",phone);

        db.insert("information",null,values);
        db.close();
    }


    @Override

    public boolean onCreateOptionsMenu(Menu menu) {
     
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate( R.menu.back, menu);
        return true;
    }


//使用菜单返回上一级
    public boolean onOptionsItemSelected(MenuItem item)
    {
     
        if(item.getItemId()==R.id.action_settings1) {
     
            Intent intent = new Intent(Tels_new.this, MainActivity.class);
            startActivity(intent);
        }
        return super.onOptionsItemSelected(item);
    }


}




删除联系人

 //点击事件 并传入参数
        mlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     
                                            @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     
                   Intent intent = new Intent(MainActivity.this, Change.class);
                   intent.putExtra("nameInt",names.get(position));
                   intent.putExtra("telInt",tels.get(position));
                   startActivity(intent);
                        }
               });

        //长按事件 删除数据
        mlistview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
     
            @Override
    //长按删除
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) {
     
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setPositiveButton("删除", new DialogInterface.OnClickListener() {
     
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
     
                        db=myHelper.getWritableDatabase();
                        db.delete("information","name=?",new String[]{
     names.get(arg2)});
                        db.close();
                        names.remove(arg2);
                        tels.remove(arg2);
                        madapter.notifyDataSetChanged();
                    }
                });
                builder.create().show();
				return true;     // 这里一定要改为true,代表长按自己消费掉了,若为false,触发长按事件的同时,还会触发点击事件
            }
        });


        }

查询联系人

     //完成搜索功能
        searchBt.setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     
                myHelper=new MyHelper(MainActivity.this);
                db=myHelper.getWritableDatabase();
                names.clear ();
                tels.clear();
                Cursor cursor=db.query("information",null,"name=?",new String[]{
     searchEt.getText().toString()},null,null,null);
                if(cursor.getCount()!=0)
                {
     cursor.moveToFirst();

                    names.add(cursor.getString(1));
                    tels.add(cursor.getString(2));

                    while(cursor.moveToNext())
                    {
     
                        names.add(cursor.getString(1));
                        tels.add(cursor.getString(2));}

                }else{
     
                    cursor=db.query("information",null,null,null,null,null,null);
                    Toast toast=Toast.makeText(MainActivity.this,"抱歉,未发现该联系人!",Toast.LENGTH_LONG);
                    toast.setText("抱歉,未发现该联系人!");
                    toast.show();
                    }
                    madapter.notifyDataSetChanged();
                    cursor.close();
                    db.close();}
        });

修改联系人和拨打电话页面

import android.Manifest;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class Change extends AppCompatActivity {
     
private EditText nameTwo,numberTwo;
private ImageView modify,call;
    private MyHelper myHelper;
    private SQLiteDatabase db;
    private ContentValues values;
    private String name;
    private String telnumber;


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

        //隐藏Toolbar的返回箭头
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);

        myHelper=new MyHelper(this);

        //接收传入的电话数据
        Intent intent=getIntent();
        name=intent.getStringExtra("nameInt");
        telnumber=intent.getStringExtra("telInt");
        nameTwo=(EditText)findViewById(R.id.etNameTwo);
        numberTwo=(EditText)findViewById(R.id.etNumberTwo);
        nameTwo.setText(name);
        numberTwo.setText(telnumber);
        //监测文本长度
        nameTwo.addTextChangedListener(new MaxLengthWatcher(8,nameTwo,this));
        numberTwo.addTextChangedListener(new MaxLengthWatcher(11,numberTwo,this));

        //两个图片按钮
        modify=findViewById(R.id.imVmodify);
        call=findViewById(R.id.imVcall);
        modify.setClickable(true);//激活按钮
        call.setClickable(true);

        //修改
        modify.setOnClickListener(new View.OnClickListener()
        {
     
            @Override
            public void onClick(View v) {
     
                db=myHelper.getWritableDatabase();//初始化数据库
                values=new ContentValues();
                values.put("name",nameTwo.getText().toString());
                values.put("tels",numberTwo.getText().toString());
                db.update("information",values,"name=?",new String[]{
     name});
                //防止吐司出现应用程序名称提示
                Toast toast=Toast.makeText(Change.this,"修改成功",Toast.LENGTH_LONG);
                toast.setText("修改成功");
                toast.show();
                db.close();
            }
        });

        //拨打
        call.setOnClickListener(new View.OnClickListener()
        {
     
            @Override
            public void onClick(View v) {
     

                if(ContextCompat.checkSelfPermission(Change.this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
     
                    ActivityCompat.requestPermissions(Change.this,new String[]{
     Manifest.permission.CALL_PHONE},1);
                }else {
     

                }

                //拨打电话
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_CALL);//设置活动类型
                intent.setData(Uri.parse("tel:"+telnumber));//设置数据
                startActivity(intent);


            }
        });

    }


    public boolean onCreateOptionsMenu(Menu menu) {
     
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate( R.menu.back, menu);
        return true;
    }


    //使用菜单返回上一级
    public boolean onOptionsItemSelected(MenuItem item)
    {
     
        if(item.getItemId()==R.id.action_settings1) {
     
            Intent intent = new Intent(Change.this, MainActivity.class);
            startActivity(intent);
        }
        return super.onOptionsItemSelected(item);
    }
}

主页面

布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/back3"
        >


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_margin="5dp">

            <EditText
                android:id="@+id/etSearch"
                android:layout_width="140dp"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:layout_weight="5"
                android:background="#ffffff"
                android:ems="10"
                android:gravity="center"
                android:hint="搜索联系人"
                android:inputType="textPersonName"
                android:textSize="25sp" />

            <ImageView
                android:id="@+id/imgsearch"
                android:layout_marginTop="3dp"
                android:layout_width="50dp"
                android:layout_height="39dp"
                app:srcCompat="@android:drawable/ic_menu_search" />
        </LinearLayout>

        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="5dp"
            android:layout_centerVertical="true"
            android:gravity="center"
            android:layout_marginEnd="20dp"
            />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

代码

import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;


public class MainActivity extends AppCompatActivity {
     
private ListView mlistview;
private ImageView searchBt;
private EditText searchEt;
private MyHelper myHelper;
private SQLiteDatabase db;
private ArrayList<String> names=new ArrayList<>();
private ArrayList<String> tels=new ArrayList<>();
private MyBaseAdapter madapter;


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

        //初始化listview
        mlistview=(ListView) findViewById(R.id.listView);
        madapter=new MyBaseAdapter();
        mlistview.setAdapter(madapter);

        myHelper=new MyHelper(this);
        db=myHelper.getWritableDatabase();

        //查询所有数据 显示页面
        Cursor cursor=db.query("information",null,null,null,null,null,null);
        if(cursor.getCount()==0)
        {
     
            //防止吐司出现应用程序名称提示
            Toast toast=Toast.makeText(MainActivity.this,"暂时没有联系人请添加!",Toast.LENGTH_LONG);
            toast.setText("暂时没有联系人请添加!");
            toast.show();
        }else{
     
            //第一个
            cursor.moveToFirst();

            names.add(cursor.getString(1));
            tels.add(cursor.getString(2));
            //下一个直到没有
            while(cursor.moveToNext())
            {
     
                names.add(cursor.getString(1));
                tels.add(cursor.getString(2));

            }
            madapter.notifyDataSetChanged();//动态更新
            cursor.close();
            db.close();
        }


        searchBt=(ImageView)findViewById(R.id.imgsearch);
        searchEt=(EditText)findViewById(R.id.etSearch);
        searchEt.addTextChangedListener(new MaxLengthWatcher(8,searchEt,this));
        searchBt.setClickable(true);//激活按钮


        //完成搜索功能
        searchBt.setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     
                myHelper=new MyHelper(MainActivity.this);
                db=myHelper.getWritableDatabase();
                names.clear ();
                tels.clear();
                Cursor cursor=db.query("information",null,"name=?",new String[]{
     searchEt.getText().toString()},null,null,null);
                if(cursor.getCount()!=0)
                {
     cursor.moveToFirst();

                    names.add(cursor.getString(1));
                    tels.add(cursor.getString(2));

                    while(cursor.moveToNext())
                    {
     
                        names.add(cursor.getString(1));
                        tels.add(cursor.getString(2));}

                }else{
     
                    cursor=db.query("information",null,null,null,null,null,null);
                    Toast toast=Toast.makeText(MainActivity.this,"抱歉,未发现该联系人!",Toast.LENGTH_LONG);
                    toast.setText("抱歉,未发现该联系人!");
                    toast.show();
                    }
                    madapter.notifyDataSetChanged();
                    cursor.close();
                    db.close();}
        });



        //点击事件 并传入参数
        mlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     
                                            @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     
                   Intent intent = new Intent(MainActivity.this, Change.class);
                   intent.putExtra("nameInt",names.get(position));
                   intent.putExtra("telInt",tels.get(position));
                   startActivity(intent);
                        }
               });

        //长按事件 删除数据
        mlistview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
     
            @Override
    //长按删除
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) {
     
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setPositiveButton("删除", new DialogInterface.OnClickListener() {
     
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
     
                        db=myHelper.getWritableDatabase();
                        db.delete("information","name=?",new String[]{
     names.get(arg2)});
                        db.close();
                        names.remove(arg2);
                        tels.remove(arg2);
                        madapter.notifyDataSetChanged();
                    }
                });
                builder.create().show();
				return true;     // 这里一定要改为true,代表长按自己消费掉了,若为false,触发长按事件的同时,还会触发点击事件
            }
        });


        }


     //适配器创建
    class MyBaseAdapter extends  BaseAdapter{
     
        @Override
        public int getCount() {
     

            return names.size();
        }
        @Override
        public Object getItem(int position) {
     
            return names.get(position);
        }
        @Override
        public long getItemId(int position) {
     
            return position;
        }

        @Override
        //读取数据并显示
        public View getView(int position, View convertView, ViewGroup parent) {
     
            View view=View.inflate(MainActivity.this,R.layout.tel,null);
            TextView mtextView=(TextView) view.findViewById(R.id.textView);

            mtextView.setText("   "+names.get(position)+" : "+tels.get(position));
            return view;
        }
    }

    @Override
//创建菜单
    public boolean onCreateOptionsMenu(Menu menu) {
     
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate( R.menu.main , menu);
        return true;
    }

    //跳转新建联系人页面
    public boolean onOptionsItemSelected(MenuItem item)
    {
     
        if(item.getItemId()==R.id.action_settings) {
     
            Intent intent = new Intent(MainActivity.this,Tels_new.class);
            startActivity(intent);
        }
     return super.onOptionsItemSelected(item);
    }

}

完整项目链接

完整项目下载链接

你可能感兴趣的:(Android基础练习,android,通讯录,App,电话本,sqlite)