通讯录作业

package com.example.wang.tongxunlu;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
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.ListView;
import android.widget.Toast;

import com.example.wang.tongxunlu.com.wang.tongxunlu.orm.TongXunLu;
import com.example.wang.tongxunlu.com.wang.tongxunlu.orm.TongXunLuDAO;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ListView lv_1;

    //数据访问对象
    TongXunLuDAO tongXunLuDAO=new TongXunLuDAO(this);

    //数据集合
    ArrayList<TongXunLu> arrayList;

    MyAdapter myAdapter;

    int index;

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

        lv_1=(ListView)findViewById(R.id.lv_1);

        arrayList=tongXunLuDAO.getAll();

        myAdapter=new MyAdapter();

        lv_1.setAdapter(myAdapter);

        lv_1.setOnCreateContextMenuListener(this);
    }

    //增加
    public void bt_OnClick(View v)
    {
       final View view= View.inflate(this, R.layout.tongxunlu_activity, null);

        AlertDialog alertDialog=new AlertDialog.Builder(this)
                .setTitle("添加联系人信息")
                .setView(view)
                .setPositiveButton("保存", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        EditText et_name=(EditText)view.findViewById(R.id.et_name);
                        EditText et_phone=(EditText)view.findViewById(R.id.et_phone);

                       TongXunLu tongXunLu=new TongXunLu(et_name.getText().toString(),
                               et_phone.getText().toString());

                        long l=tongXunLuDAO.insert(tongXunLu);

                        if (l>0)
                        {
                            Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
                        }
                        else
                        {
                            Toast.makeText(MainActivity.this, "添加失败", Toast.LENGTH_SHORT).show();
                        }

                        arrayList.add(0, tongXunLu);

                        myAdapter.notifyDataSetChanged();

                    }
                })
                .setNegativeButton("取消",null)
                .show();
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        menu.add(0, 1, 1, "修改");
        menu.add(0,2,2,"删除");

        AdapterView.AdapterContextMenuInfo m=(AdapterView.AdapterContextMenuInfo)menuInfo;

        index=m.position;
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {

        Log.e("TAG","index="+index);
        switch (item.getItemId())
        {
            case 1:
                //修改
                View view= View.inflate(this, R.layout.tongxunlu_activity, null);

                final EditText et_name=(EditText)view.findViewById(R.id.et_name);
                et_name.setText(arrayList.get(index).getName());

                final EditText et_phone=(EditText)view.findViewById(R.id.et_phone);
                et_phone.setText(arrayList.get(index).getPhone_number());

                new AlertDialog.Builder(this)
                        .setTitle("修改联系人信息")
                        .setView(view)
                        .setPositiveButton("修改", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                TongXunLu tongxunlu = arrayList.get(index);

                                tongxunlu.setName(et_name.getText().toString());
                                tongxunlu.setPhone_number(et_phone.getText().toString());

                                if (tongXunLuDAO.updata(tongxunlu) > 0) {
                                    Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(MainActivity.this, "修改失败", Toast.LENGTH_SHORT).show();
                                }
                                //刷新列表
                                myAdapter.notifyDataSetChanged();
                            }
                        })
                        .setNegativeButton("取消", null)
                        .show();

                break;

            case 2:

                //删除
                new  AlertDialog.Builder(this)
                        .setTitle("确定要删除?")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                //删除
                                if ( tongXunLuDAO.delete(arrayList.get(index).getId())>0)
                                {
                                    Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();

                                    //更新List
                                    arrayList.remove(index);

                                    //刷新列表
                                    myAdapter.notifyDataSetChanged();
                                }
                                else
                                {
                                    Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show();
                                }

                            }
                        })
                        .setNegativeButton("取消",null)
                        .show();

                break;

        }

        return super.onContextItemSelected(item);
    }

    class MyAdapter extends BaseAdapter
    {
        @Override
        public int getCount() {
            return arrayList.size();
        }

        @Override
        public Object getItem(int position) {
            return arrayList.get(position);
        }

        @Override
        public long getItemId(int position) {
            return arrayList.get(position).getId();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            TongXunLu tongXunLu=arrayList.get(position);

            if (convertView==null)
            {
                convertView=View.inflate(MainActivity.this,R.layout.tongxunlu_activity,null);
            }

            EditText editText=(EditText)convertView.findViewById(R.id.et_name);

            editText.setText(tongXunLu.getName());

            EditText editText1=(EditText)convertView.findViewById(R.id.et_phone);

            editText1.setText(tongXunLu.getPhone_number());

            return convertView;
        }
    }
}

MainActivity

package com.example.wang.tongxunlu.com.wang.tongxunlu.orm;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import java.util.ArrayList;

//数据库操作类
public class TongXunLuDAO {

    private  DBHelper dh;

    private  final String  TABLENAME="t_tongxunl";

    public TongXunLuDAO(Context context)
    {
        // this.context=context;

        dh=new DBHelper(context);
    }

    //增
    //传入参数:实体类的实例
    public long insert(TongXunLu tongxunlu)
    {
        long rtn=0;
        //连接数据库
        SQLiteDatabase sd=dh.getWritableDatabase();

        ContentValues cv=new ContentValues();

        cv.put("name",tongxunlu.getName());

        cv.put("phone_number",tongxunlu.getPhone_number());

        rtn=sd.insert(TABLENAME,null,cv);

        sd.close();
        return rtn;
    }

    //删
    public int delete(long id)
    {
        int rtn=0;

        SQLiteDatabase sd=dh.getWritableDatabase();

        rtn=sd.delete(TABLENAME,"_id=?",new String[]{id+""});

        sd.close();
        return rtn;
    }

    //改
    public int updata(TongXunLu tongxunlu)
    {
        int rtn=0;

        SQLiteDatabase sd=dh.getWritableDatabase();

        ContentValues cv=new ContentValues();

        cv.put("name",tongxunlu.getName());

        cv.put("phone_number",tongxunlu.getPhone_number());

        rtn=sd.update(TABLENAME,cv,"_id=?",new String[]{tongxunlu.getId()+""});

        Log.e("TAG","rtn="+rtn);

        sd.close();
        return  rtn;
    }
    //查
    //返回查询结果
    public ArrayList<TongXunLu> getAll()
    {
        ArrayList<TongXunLu>  tongxunlus=new ArrayList<>();

        //连接数据库
        SQLiteDatabase sd=dh.getWritableDatabase();

        //查询之后得到游标结果集
        Cursor cursor=sd.query(TABLENAME, null, null, null, null, null, "_id desc");

        //遍历结果集
        while (cursor.moveToNext())
        {
            //1.把数据转成实体类的实例
            TongXunLu bl=new TongXunLu(cursor.getLong(0),cursor.getString(1),cursor.getString(2));

            tongxunlus.add(bl);

        }

        cursor.close();

        sd.close();
        return tongxunlus;
    }

}

TongXunLuDAO

package com.example.wang.tongxunlu.com.wang.tongxunlu.orm;

public class TongXunLu {

    private long id;
    private String name;
    private  String phone_number;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getPhone_number() {
        return phone_number;
    }

    public void setPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public TongXunLu(long id, String name, String phone_number) {
        this.id = id;
        this.phone_number = phone_number;
        this.name = name;
    }

    public TongXunLu(String name, String phone_number) {
        this.phone_number = phone_number;
        this.name = name;
    }
}

TongXunLu

package com.example.wang.tongxunlu.com.wang.tongxunlu.orm;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

    @Override
    public void onCreate(SQLiteDatabase db) {

        String sql= "CREATE TABLE t_tongxunl (_id  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                        "name  TEXT,phone_number  INTEGER)";
        db.execSQL(sql);

    }

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

    }

    public DBHelper(Context context) {
        super(context, "TongXunl.db", null, 1);
    }
}

DBHelper

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.wang.tongxunlu.MainActivity"
    android:orientation="vertical">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/lv_1"
        android:layout_weight="1"></ListView>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加联系人"
        android:id="@+id/bt_1"
        android:onClick="bt_OnClick"/>

</LinearLayout>

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:"
            android:id="@+id/tv_name"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_name"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="电话:"
            android:id="@+id/tv_phone"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_phone"/>
    </LinearLayout>

</LinearLayout>

tongxunlu_activity

时间: 2024-11-08 05:45:56

通讯录作业的相关文章

OC之实现中级通讯录

//实现中级通讯录. /作业1: 实现通讯录.需求:        //1.定义联系人类Contact. 实例变量:姓名(拼音 首字母大写), 性别, 电话号码, 住址, 分组名称, 年龄. 方法: 自定义初始化方法(姓名 ,电话号码), 显示联系人信息.        //2./2.在main.m中定义字典, 分组管理所有联系人. 分组名为26个大写的英文字母.        //3.可以添加联系人对象, 如果姓名或电话号码为空, 添加失败.添加联系人到匹配的分组.        //4.获取

第一次的作业,现实的自身

第一部分:结缘计算机 我第一次接触计算机是在小之前学的事了,在我的亲戚家,我哥手把手教学CS,那时候之知道几个按键,连按键的名子,作用的不了解的.之后就是小学的计算机课,老师交一些画图,制表,但那个时候已经有大神可以连网下载小游戏了!我深受其害-我感觉似乎好多的男生都是因为游戏和计算机认识的. 第二部分:在计算机系里学习 13年报考本校的土木工程系,但被调剂带计算机系 ,15年退伍回来复学 开始学习我不曾了解过的计算机!开始接触C语言,数据库,HTML等等.2年的学习,我自己觉得我似乎连编程的"

一个简单的通讯录。。。

上课的时候老师布置了一个作业,利用结构体实现一个简单地通讯录,这可是我们大一的时候学期末的课设题目啊,不过还好现在的水平比之前高了那么一点.. 实现一个通讯录: 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人 这个是通讯录的主要功能. 这个比较大,所以我们写在三个文件里.

C语言第十次博客作业--结构体

#一.PTA实验作业(5分) ##题目1:6-3 结构体数组中查找指定编号人员 ###1. 本题PTA提交列表(要提交列表,不是结果) ###2. 设计思路 struct student { char num[10]; int year,month,day ; };该结构体表示人员的编号,出生年月日. 定义一个环境变量 for i=0 to i<8 若找到指定编号,则return *(std+i) ###3.代码截图(注意,截图,截图,截图.不要粘贴博客上.不用用···语法去渲染) ###4.本

C语言结构体作业

一.PTA实验作业 题目1:6-3 结构体数组中查找指定编号人员 1. 本题PTA提交列表 2. 设计思路 定义一个结构体指针*p for i=0 to i=7 如果std+i的编号与输入的编号一样 将std+i的地址传给p end for 返回p 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 无错误 题目2:7-2 时间换算 1. 本题PTA提交列表 2. 设计思路 定义结构体数组Time,其内容包括时,分,秒 定义一个字符ch,增加的秒数n,结构体变量time 输入tim

软件工程——第二次作业(2)

施工中-- 作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/922 项目要求是编写出一个拥有"词频统计"功能的小程序,作为一个小程序,若只是实现基本的词频统计功能,其实并不是很难.但是,如果再附加一些需求和功能的话就会让我感到有点难度了,更何况为了以后课程的要求,我选择使用Visual Studio 2015编译器和C#语言这两种从未学过的工具,在4-5天之内共10个小时左右(预计,但是实际上确实是花了更多时间

2017282110285--第一次个人作业

第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 其实我从高一就开始接触编程了,在高中我搞了两年的算法竞赛,算是有一点算法基础(捂脸,其实实力弱得一批),也是在那个时候开始爱上了编程.因此在高考结束后就报了信息安全专业,哪怕那时候父母不是很支持我报跟计算机相关的专业.我认为我的起步条件会比一般的零基础的萌新稍微好那么一点点,但也就仅限于此了,毕竟有天赋的人比比皆是,他们只是缺少一个契机罢了,入门之后分分钟起飞的也是一大把,更不用说那些大牛博主了,他们的程序员

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in

团队编程项目作业

团队名称: 简单 队长 学号:2015035107224 姓名:张志鹏 成员 学号:2015035107071 姓名:邱阳阳 学号:2015035107044 姓名:刘孝东 学号:2015035107007 姓名:孙弘原 学号:2015035107005 姓名:刘文帅 学号:2015035107009 姓名:杨琳 团队编程项目作业名称:爬取豆瓣电影TOP250 选择该团队编程项目原因:感觉项目有意思