Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录
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" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:addStatesFromChildren="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名"
android:textColor="?android:attr/textColorSecondary" />
<EditText
android:id="@+id/et_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:addStatesFromChildren="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄"
android:textColor="?android:attr/textColorSecondary" />
<EditText
android:id="@+id/et_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:addStatesFromChildren="true"
android:gravity="center" >
<EditText
android:id="@+id/et_choose"
android:layout_width="77dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true" />
<Button
android:id="@+id/bt_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="添加" />
<Button
android:id="@+id/bt_modify"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改"/>
<Button
android:id="@+id/bt_del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除" />
<!-- <Button
android:id="@+id/bt_query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询"
android:onClick="querybutton" >
</Button> -->
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android: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">
<RelativeLayout
android:id="@+id/rl_parent"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#6495ED">
<TextView
android: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>
<RelativeLayout
android:id="@+id/rl_child"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#B0C4DE"
android:visibility="gone">
<TextView
android: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;
}
@Override
public contactAdapter.contactviewholder onCreateViewHolder(ViewGroup parent, int viewType) {
inflater= LayoutInflater.from(context).inflate(R.layout.item_contact,parent,false);
return new contactviewholder(inflater);
}
@Override
public 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() {
@Override
public 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();}
@Override
public 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);
}
}
}
四、效果展示与源码
啊啊啊我的录屏软件过期了,先把作业交了再说,希望老师不要让我死太惨。。。感兴趣的可以直接下载源码,之后我会补上效果图。