Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录

  • Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录
    • 一、任务需求
    • 二、SQLite数据库简介
    • 三、部分代码展示
      • 1. friend_main.xml()
      • 2. item_contact.xml
      • contactAdapter
    • 四、效果展示与源码

Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录

一、任务需求

  • 熟悉SQLite数据库的DAO标准CUD操作。
  • 在此基础上完善WECHAT项目中的“通讯录”模块,如下图所示;其中 ①必做,②/③选一实现。

二、SQLite数据库简介

SQLite (英语发音:/ˌɛskjuːɛlˈlaɪt/[ or 英语发音:/ˈsiːkwəl.laɪt/)是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。维基百科

(突然想起来交作业时间好像过了/(ㄒoㄒ)/~~,先占个坑把作业交了,之后再找时间把这里详实起来。)

三、部分代码展示

1. friend_main.xml()

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:addStatesFromChildren="true" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="姓名"android:textColor="?android:attr/textColorSecondary" /><EditTextandroid:id="@+id/et_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:singleLine="true" /></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:addStatesFromChildren="true" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="年龄"android:textColor="?android:attr/textColorSecondary" /><EditTextandroid:id="@+id/et_age"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:singleLine="true" /></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:addStatesFromChildren="true"android:gravity="center" ><EditTextandroid:id="@+id/et_choose"android:layout_width="77dp"android:layout_height="wrap_content"android:layout_weight="1"android:singleLine="true" /><Buttonandroid:id="@+id/bt_add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加" /><Buttonandroid:id="@+id/bt_modify"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="修改"/><Buttonandroid:id="@+id/bt_del"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="删除" /><!--  <Buttonandroid:id="@+id/bt_query"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查询"android:onClick="querybutton" ></Button> --></LinearLayout><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rv_friends"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /></LinearLayout>

如下图

2. item_contact.xml

<?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="wrap_content"xmlns:tools="http://schemas.android.com/tools"android:layout_margin="5dp"android:orientation="vertical"><RelativeLayoutandroid:id="@+id/rl_parent"android:layout_width="match_parent"android:layout_height="50dp"android:background="#6495ED"><TextViewandroid:id="@+id/tv_team"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:textColor="@android:color/white"tools:text="主布局" /></RelativeLayout><RelativeLayoutandroid:id="@+id/rl_child"android:layout_width="match_parent"android:layout_height="50dp"android:background="#B0C4DE"android:visibility="gone"><TextViewandroid:id="@+id/tv_team_child"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:textColor="@android:color/white"tools:text="副布局" /></RelativeLayout></LinearLayout>

如图

contactAdapter

package com.example.example1.mywechat;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;import androidx.recyclerview.widget.RecyclerView;import java.util.List;
import java.util.Map;public class contactAdapter extends RecyclerView.Adapter<contactAdapter.contactviewholder> {//    private List<String>list;private List<Map<String,String>> data;private Context context;private View inflater;private int expandedPosition = -1;private contactviewholder mViewHolder;public contactAdapter(Context context, List<Map<String,String>>data) {this.context=context;//this.list=list;this.data=data;}@Overridepublic contactAdapter.contactviewholder onCreateViewHolder(ViewGroup parent, int viewType) {inflater= LayoutInflater.from(context).inflate(R.layout.item_contact,parent,false);return new contactviewholder(inflater);}@Overridepublic void onBindViewHolder(final contactAdapter.contactviewholder holder, int position) {//holder.tvTeam.setText(list.get(position));//holder.tvTeamChild.setText(list.get(position) + "的联系方式");holder.tvTeam.setText(data.get(position).get("name"));holder.tvTeamChild.setText("电话:"+data.get(position).get("phoneNumber"));final boolean isExpanded = position == expandedPosition;holder.rlChild.setVisibility(isExpanded ? View.VISIBLE : View.GONE);holder.rlParent.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mViewHolder != null) {mViewHolder.rlChild.setVisibility(View.GONE);notifyItemChanged(expandedPosition);}expandedPosition = isExpanded ? -1 : holder.getAdapterPosition();mViewHolder = isExpanded ? null : holder;notifyItemChanged(holder.getAdapterPosition());}});}//    @Override
//    public int getItemCount() { return list.size();}@Overridepublic int getItemCount() { return data.size();}class contactviewholder extends RecyclerView.ViewHolder{RelativeLayout rlParent, rlChild;TextView tvTeam, tvTeamChild;public contactviewholder(View itemView) {super(itemView);rlParent = itemView.findViewById(R.id.rl_parent);rlChild = itemView.findViewById(R.id.rl_child);tvTeam = itemView.findViewById(R.id.tv_team);tvTeamChild = itemView.findViewById(R.id.tv_team_child);}}
}

四、效果展示与源码

啊啊啊我的录屏软件过期了,先把作业交了再说,希望老师不要让我死太惨。。。感兴趣的可以直接下载源码,之后我会补上效果图。

本次项目对应源码

Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录相关推荐

  1. Android studio+SQLCipher加密SQLite数据库的几个坑

    Android studio SQLCipher加密SQLite数据库的几个坑 前言:Android 自带的SQLite数据库可以用于数据存储,但是,大家都知道其数据是存储于手机的data/data/ ...

  2. android studio sqlitedatabase,在SQLite数据库Android Studio上使用预填充数据库

    本问题已经有最佳答案,请猛点这里访问. 在这里,我想使用我预先填充的SQLite数据库到我的Android应用程序. 因此,首次运行时,它会自动从assets文件夹中复制数据库,并在我的Android ...

  3. 安卓大作业:使用Android Studio开发天气预报APP(使用sqlite数据库)

    使用Android Studio开发天气预报APP 今天我来分享一下如何使用Android Studio开发一个天气预报APP.在文中,我们将使用第三方接口获取实时天气数据,并显示在APP界面上. 步 ...

  4. 安卓视频开发 mysql_在Android应用中使用SQLite数据库(传智播客视频笔记)

    在Android应用中使用SQLite数据库 应用生成的数据库文件保存为/data/data/应用包名/databases/name.db,生成的文件可用SQLite Expert打开 (name是自 ...

  5. android入门基础笔记,Sqlite数据库下载

    * 移动通讯技术的发展: 第一代通讯技术:模拟信号 工作频段   缺点:保密性差 第二代通讯技术: 体积越来越小  数字信号(加密)   短信  彩信 第三代通讯技术: 数字信号   可处理图像.音乐 ...

  6. 《Android Studio开发实战 从零基础到App上线》第一版的资源下载和内容勘误

    资源下载 下面是<Android Studio开发实战 从零基础到App上线>(第一版)一书用到的工具和代码资源: 1.本书使用的Android Studio版本为2.2.3,因为Andr ...

  7. android增删功能代码,Android Studio开发实战 之 增删改查

    增删改查是一个应用最基础的操作,增删改查的流程走通了,下面的路程也就顺利多了.现在使用Android Studio开发一个简单的应用,该应用就实现了增删改查的操作,看似简单,到底简不简单呢,下面开始操 ...

  8. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  9. Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码(不定时更新)

    本文是以源码中development/tools/idegen/README作为指导文档,给出了使用Android Studio导入Android源码的方法步骤. 环境: Ubuntu 12.04,o ...

最新文章

  1. linux 定时器中断 imx,NXP iMX8 存储性能测试
  2. 为了偷吃东西你能有多拼?! | 今日最佳
  3. How Many Pieces of Land ? (UVA-10213)
  4. 他是Facebook广告投入费用过亿的独立站卖家
  5. 多元统计分析朱建平pdf_应用多元统计分析课后答案朱建平版[精心整理].doc
  6. Matlab设置字体大小
  7. word 宏相关代码集合
  8. C++打印九九乘法表
  9. Evo使用过程问题汇总
  10. Fovea Box阅读学习笔记
  11. NodeJs+VueJs +前端实现批量打印二维码
  12. log4j日志文件默认存放路径
  13. 如何在Win7中查看安装软件的文件夹位置
  14. Tableau(9):计算字段、表计算、自定义表计算
  15. 如何将明细数据关联对照表后生成汇总统计表
  16. it人都包括哪些岗位
  17. 帆软FineReport 报表联动
  18. 计算机职业学校在哪里,四川省托普计算机职业学校地址在哪里
  19. IntelliJ IDEA 2017 破解过程[详细步骤](Mac OS Windows)
  20. AltiumDesigner灵活利用X、Y镜像功能

热门文章

  1. re匹配中文格式的字符
  2. 2022-2028年全球与中国智能纺织品产业市场前瞻与投资战略规划分析
  3. Linux IP代理筛选系统(shell+proxy)
  4. 阿里面试官:“你有高并发经验吗?”
  5. 【C语言蓝桥杯每日一题】—— 单词分析
  6. 运行项目遇到:该网页无法正常运作,localhost将您重定向的次数过多时的解决方案
  7. Linux下RTL8723BE无线网卡驱动问题解决方法
  8. ORACLE对表批处理操作
  9. php控制windows系统关机,window_winXP系统设置一键关机的两种方法,windows系统关机需要三步,对我 - phpStudy...
  10. 可恶的Freez Screen Video Capture,软破解之