成果展示:
1.前期准备
(1)在配置文件中添加权限及启动页面次序
①展开工程,打开app下方的AndroidManifest.xml,添加权限,如下:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
② 依旧在AndroidManifest.xml文件中添加启动页面次序的功能代码
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.ts_menu"> //这里注意修改成自己创建的包名
- <uses-permission android:name="android.permission.CAMERA" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".AddInfoActivity"></activity>
- <activity android:name=".LoginActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name=".MainActivity">
- </activity>
- </application>
- </manifest>
复制代码 (2)添加依靠
展开工程,打开app下方的build.gradle ,添加依靠,如下:依靠添加好之后,要记取同步,在页面右上角的位置单击:Sync Now 即可。
implementation 'com.android.support:recyclerview-v7:+'
implementation 'com.github.bumptech.glide:glide:4.9.0'
api 'com.blankj:utilcode:1.23.7'
(3)素材
一共5张图片,粘贴到工程的drawable文件夹下来,此中bgone.png,bgthree.jpg两个图片是登录界面和信息添加界面的背景,buttonbg.png,savebg.png图片是添加备忘录按钮和保存按钮的背景,别的一张背景图片是sunshine.jpg是一张默认表现的照片。选择你本身喜好的图片添加进去吧!
2.所需的布局文件
2.1 activity_login.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:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="@drawable/bgone"
- tools:context=".LoginActivity">
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="用户登录"
- android:textStyle="bold"
- android:textColor="#000000"
- android:textSize="40sp"
- android:layout_margin="100dp"
- android:gravity="center"/>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_margin="10dp">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="用户名:"
- android:textColor="#000000"
- android:textSize="30sp" />
- <EditText
- android:id="@+id/editText_inputname"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="请输入用户名"
- android:textColor="#000000"
- android:textSize="30sp" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_margin="10dp">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="密 码:"
- android:textColor="#000000"
- android:textSize="30sp" />
- <EditText
- android:id="@+id/editText_inputpwd"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="请输入密码"
- android:textColor="#000000"
- android:inputType="textPassword"
- android:textSize="30sp" />
- </LinearLayout>
- <CheckBox
- android:id="@+id/checkBox_reme"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="记住密码"
- android:layout_gravity="right"
- android:layout_margin="10dp"/>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_margin="10dp">
- <Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="取消"
- android:textColor="#000000"
- android:textSize="30sp"
- android:layout_weight="1"/>
- <Button
- android:id="@+id/button_login"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="登录"
- android:textColor="#000000"
- android:textSize="30sp"
- android:layout_weight="1"/>
- </LinearLayout>
- </LinearLayout>
复制代码 2.2 activity_main.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:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".MainActivity">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="愿这小小的备忘录,记下我生活中的点点滴滴"
- android:textStyle="bold"
- android:textColor="#000000"
- android:layout_gravity="center"
- android:layout_margin="10dp" />
- <Button
- android:id="@+id/button_add"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="添加备忘录"
- android:textStyle="bold"
- android:textColor="#000000"
- android:layout_gravity="right"
- android:background="@drawable/buttonbg"
- android:layout_margin="10dp" />
- <android.support.v7.widget.RecyclerView
- android:id="@+id/recy_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
- </LinearLayout>
复制代码 2.3 activity_add_info.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:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="@drawable/bgthree"
- tools:context=".AddInfoActivity">
- <EditText
- android:id="@+id/editText_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="备忘录的标题"
- android:textStyle="bold"
- android:textColor="#000000"
- android:textSize="30sp"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="2dp"
- android:background="#009688"
- android:layout_marginTop="-10dp"/>
- <EditText
- android:id="@+id/editText_content"
- android:layout_width="match_parent"
- android:layout_height="200dp"
- android:hint="备忘录的内容"
- android:textStyle="bold"
- android:textColor="#000000"
- android:textSize="20sp"
- android:gravity="top"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="2dp"
- android:background="#009688"
- android:layout_marginTop="-10dp"/>
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="请选用下面的任一种方式,添加一张心情图片:"
- android:textStyle="bold"
- android:textColor="#000000"
- android:textSize="15sp"
- android:gravity="top"
- android:layout_margin="10dp"/>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_margin="10dp">
- <Button
- android:id="@+id/button_camera"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="拍照"
- android:textStyle="bold"
- android:textColor="#000000"
- android:textSize="15sp"
- android:layout_margin="10dp"/>
- <Button
- android:id="@+id/button_photo"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="从图库中选择"
- android:textStyle="bold"
- android:textColor="#000000"
- android:textSize="15sp"
- android:layout_margin="10dp"/>
- </LinearLayout>
- <ImageView
- android:id="@+id/imageView_preview"
- android:layout_width="wrap_content"
- android:layout_height="200dp"
- android:src="@drawable/sunshine"
- android:layout_marginBottom="20dp"
- android:layout_gravity="center"/>
- <Button
- android:id="@+id/button_save"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="保存"
- android:textStyle="bold"
- android:textColor="#000000"
- android:textSize="30sp"
- android:background="@drawable/savebg"
- android:layout_margin="10dp"/>
- </LinearLayout>
复制代码 2.4 recy_item.xml文件代码:
主界面--子布局界面
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#7AECCC"
- android:id="@+id/item_layout"
- android:layout_margin="5dp" >
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:layout_gravity="center"
- android:layout_weight="1"
- android:layout_margin="5dp"
- >
- <TextView
- android:id="@+id/item_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="标题"
- android:textSize="20sp"
- android:textStyle="bold"
- android:textColor="#000000"/>
- <TextView
- android:id="@+id/item_content"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="内容"
- android:textColor="#000000"/>
- </LinearLayout>
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:layout_margin="5dp">
- <ImageView
- android:id="@+id/item_image"
- android:layout_width="100dp"
- android:layout_height="100dp"
- android:src="@mipmap/ic_launcher_round"/>
- <TextView
- android:id="@+id/item_time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="时间"
- android:textColor="#000000"
- android:layout_gravity="center"/>
- </LinearLayout>
- </LinearLayout>
复制代码
3.所需的java类文件
以下是所需要添加的package,及java类文件。
package所需要添加的文件有adapter、bean、db三个package包。
java类文件除了开始的主文件MainActivity,还需添加MemoAdapter、MemoBean、MydbHelper、AddInfoActivity、LoginActivity5个java类文件。
3.1 MemoAdapter文件代码:
备忘录的自界说适配器功能代码
- package com.example.ts_menu.adapter;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.database.sqlite.SQLiteDatabase;
- import android.graphics.Color;
- import android.graphics.drawable.GradientDrawable;
- import android.os.Build;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import androidx.annotation.NonNull;
- import androidx.annotation.RequiresApi;
- import androidx.recyclerview.widget.RecyclerView;
- import com.bumptech.glide.Glide;
- import com.example.ts_menu.R;
- import com.example.ts_menu.bean.MemoBean;
- import com.example.ts_menu.db.MyDbHelper;
- import java.util.List;
- import java.util.Random;
- //1 类文件后面添加泛型
- //2 鼠标定位类文件行红色波浪线处,Alt+Enter键:添加未实现的方法
- //3 鼠标定位类文件行ViewHolder处,Alt+Enter键:添加内部类
- //4 鼠标定位界面最下方内部类ViewHolder处,添加extends RecyclerView.ViewHolder
- //5 鼠标定位界面最下方内部类ViewHolder红色波浪线处,Alt+Enter键:添加构造方法
- //6 定义两个对象:上下文环境和数组
- //7 定义两个对象下方的空白处:Alt+Insert键,添加适配器的构造方法
- public class MemoAdapter extends RecyclerView.Adapter<MemoAdapter.ViewHolder> {
- private Context mcontext;
- private List<MemoBean> arr1;
- private MyDbHelper mhelper1;
- private SQLiteDatabase db;
- public MemoAdapter(Context mcontext, List<MemoBean> arr1) {
- this.mcontext = mcontext;
- this.arr1 = arr1;
- }
- //负责加载item布局
- @NonNull
- @Override
- public MemoAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
- View view= LayoutInflater.from(mcontext).inflate(R.layout.recy_item,parent,false);
- ViewHolder mholder=new ViewHolder(view);
- return mholder;
- }
- //负责加载item的数据
- @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
- @Override
- public void onBindViewHolder(@NonNull MemoAdapter.ViewHolder mholder, final int i) {
- final MemoBean memoBean=arr1.get(i);
- mholder.item_title.setText(memoBean.getTitle());
- mholder.item_content.setText(memoBean.getContent());
- mholder.item_time.setText(memoBean.getTime());
- Glide.with(mcontext).load(memoBean.getImgpath()).into(mholder.item_img);
- // 完善:设置RecyclerView中每一个子项的颜色和形状
- Random random = new Random();
- int color = Color.argb(255, random.nextInt(256), random.nextInt(256), random.nextInt(256));
- GradientDrawable gradientDrawable = new GradientDrawable();
- gradientDrawable.setShape(GradientDrawable.RECTANGLE);//形状
- gradientDrawable.setCornerRadius(10f);//设置圆角Radius
- gradientDrawable.setColor(color);//颜色
- mholder.item_layout.setBackground(gradientDrawable);//设置为background
- //完善:单击其中的一个子项,弹出删除功能
- mholder.item_layout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //弹出对话框,删除
- AlertDialog.Builder dialog=new AlertDialog.Builder(mcontext);
- dialog.setMessage("确定删除吗?");
- dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int abc) {
- //从数据库当中删除掉
- mhelper1= new MyDbHelper(mcontext);
- db=mhelper1.getWritableDatabase();
- db.delete("tb_memory","title=?",new String[]{arr1.get(i).getTitle()});
- arr1.remove(i);
- notifyItemRemoved(i);
- dialogInterface.dismiss();
- }
- });
- dialog.setNegativeButton("取消",null);
- dialog.setCancelable(false);
- dialog.create();
- dialog.show();
- }
- });
- }
- //recyView一共有多少个子项
- @Override
- public int getItemCount() {
- return arr1.size();
- }
- public class ViewHolder extends RecyclerView.ViewHolder{
- TextView item_title,item_content,item_time;
- ImageView item_img;
- LinearLayout item_layout;
- public ViewHolder(@NonNull View itemView) {
- super(itemView);
- item_title=itemView.findViewById(R.id.item_title);
- item_content=itemView.findViewById(R.id.item_content);
- item_img=itemView.findViewById(R.id.item_image);
- item_time=itemView.findViewById(R.id.item_time);
- item_layout=itemView.findViewById(R.id.item_layout);
- }
- }
- }
复制代码 3.2 MemoBean文件代码:
一个javabean文件,为了存储备忘录的信息
- package com.example.ts_menu.bean;
- public class MemoBean {
- private String title;
- private String content;
- private String imgpath;
- private String time;
- public MemoBean(String title, String content, String imgpath, String time) {
- this.title = title;
- this.content = content;
- this.imgpath = imgpath;
- this.time = time;
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- public String getImgpath() {
- return imgpath;
- }
- public void setImgpath(String imgpath) {
- this.imgpath = imgpath;
- }
- public String getTime() {
- return time;
- }
- public void setTime(String time) {
- this.time = time;
- }
- }
复制代码 3.3 MydbHelper文件代码:
数据库文件
- package com.example.ts_menu.db;
- import android.content.Context;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteOpenHelper;
- public class MyDbHelper extends SQLiteOpenHelper {
- private static String DBNAME="zsmemo.db";
- private static int VERSION=1;
- //构造方法
- public MyDbHelper( Context context) {
- super(context, DBNAME, null, VERSION);
- }
- // 创建数据库
- @Override
- public void onCreate(SQLiteDatabase db) {
- //创建数据表
- db.execSQL("create table tb_memory(_id Integer primary key,title String (200),content String (2000),imgpath String (200),mtime String (50))");
- }
- //升级数据库
- @Override
- public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
- }
- }
复制代码 3.4 AddInfoActivity文件代码:
拍照功能直接闪退:
- if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N)
- {
- StrictMode.VmPolicy.Builder builder=new StrictMode.VmPolicy.Builder();
- StrictMode.setVmPolicy(builder.build());
- }
复制代码 利用上述代码防止闪退。
在拍照功能时应该将保存路径代码改为tmp_path=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()+"/image"+randtime+".jpg";
有用防止拍照后确定不了问题。
- package com.example.ts_menu;
- import android.content.ContentValues;
- import android.content.Intent;
- import android.database.sqlite.SQLiteDatabase;
- import android.net.Uri;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.os.Bundle;
- import android.text.format.Time;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.Toast;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AppCompatActivity;
- import com.blankj.utilcode.util.UriUtils;
- import com.bumptech.glide.Glide;
- import com.example.ts_menu.db.MyDbHelper;
- import com.example.ts_menu.db.MyDbHelper;
- import java.io.File;
- import java.io.IOException;
- public class AddInfoActivity extends AppCompatActivity {
- //定义对象
- EditText edit_title,edit_content;
- Button btn_camera,btn_photo,btn_save;
- ImageView img_preview;
- String tmp_path,disp_path;
- MyDbHelper mhelper;
- SQLiteDatabase db;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_add_info);
- //1 绑定控件
- initView();
- //2 单击按钮、拍照、从图库中选择照片
- btnOnClick();
- //3 接受拍好照片、接受从图库当中选择的照片 ------方法:系统回调
- //4 把信息保存到数据库中
- btnSave();
- }
- //1 绑定控件-----代码
- private void initView() {
- edit_title=findViewById(R.id.editText_title);
- edit_content=findViewById(R.id.editText_content);
- btn_camera=findViewById(R.id.button_camera);
- btn_photo=findViewById(R.id.button_photo);
- img_preview=findViewById(R.id.imageView_preview);
- btn_save=findViewById(R.id.button_save);
- mhelper=new MyDbHelper(AddInfoActivity.this);
- db= mhelper.getWritableDatabase();
- }
- //2 单击按钮、拍照----------代码
- private void btnOnClick() {
- btn_camera.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //拍照
- Time time=new Time();
- time.setToNow();
- String randtime=time.year+(time.month+1)+time.monthDay+time.hour+time.minute+time.second+"";
- // tmp_path= Environment.getExternalStorageDirectory()+"/image"+ randtime+".jpg";
- tmp_path=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()+"/image"+randtime+".jpg";
- File imgfile=new File(tmp_path);
- try {
- imgfile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");
- intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imgfile) );
- startActivityForResult(intent,11);
- }
- });
- btn_photo.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //选择照片
- Intent intent=new Intent("android.intent.action.GET_CONTENT");
- intent.setType("image/*");
- startActivityForResult(intent,22);
- }
- });
- }
- //3 接受拍好照片、接受从图库当中选择的照片 ------方法:系统回调
- @Override
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- switch (requestCode){
- case 11:
- if(resultCode==RESULT_OK){
- disp_path=tmp_path;
- Glide.with(AddInfoActivity.this).load(disp_path).into(img_preview);
- }
- break;
- case 22:
- Uri imageuri=data.getData();
- if (imageuri==null)
- {
- return;
- }
- disp_path=UriUtils.uri2File(imageuri).getPath();
- Glide.with(AddInfoActivity.this).load(disp_path).into(img_preview);
- break;
- default:
- break;
- }
- }
- //4 把信息保存到数据库中-------------代码
- private void btnSave() {
- btn_save.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //保存信息到数据库代码
- Time time=new Time();
- time.setToNow();
- ContentValues contentValues=new ContentValues();//一行
- contentValues.put("title",edit_title.getText().toString());//1行——1列
- contentValues.put("content",edit_content.getText().toString());//1行——3列
- contentValues.put("imgpath",disp_path);
- contentValues.put("mtime",time.year+"/"+(time.month+1)+"/"+time.monthDay);
- db.insert("tb_memory",null,contentValues);
- Toast.makeText(AddInfoActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
- //跳转到主界面
- Intent intent=new Intent(AddInfoActivity.this,MainActivity.class);
- startActivity(intent);
- finish();
- }
- });
- }
- }
复制代码 3.5 LoginActivity文件代码:
- package com.example.ts_menu;
- import android.content.Intent;
- import android.content.SharedPreferences;
- //import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.CheckBox;
- import android.widget.EditText;
- import androidx.appcompat.app.AppCompatActivity;
- public class LoginActivity extends AppCompatActivity {
- //定义对象
- private EditText edit_inputname,edit_inputpwd;
- private CheckBox check_reme;
- private Button btn_login;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_login);
- //1 绑定控件
- initView();
- //2 单击登录按钮,将用户名和密码保存起来
- btnloginonClick();
- //3 下次启动,直接显示用户名和密码
- displayinfo();
- }
- //1 绑定控件--------代码
- private void initView() {
- edit_inputname=findViewById(R.id.editText_inputname);
- edit_inputpwd=findViewById(R.id.editText_inputpwd);
- check_reme=findViewById(R.id.checkBox_reme);
- btn_login=findViewById(R.id.button_login);
- }
- //2 单击登录按钮,将用户名和密码保存起来----代码
- private void btnloginonClick() {
- btn_login.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //保存用户名和密码
- SharedPreferences.Editor editor=getSharedPreferences("myinfo",0).edit();
- editor.putString("name",edit_inputname.getText().toString());
- editor.putString("pwd",edit_inputpwd.getText().toString());
- editor.putBoolean("st",check_reme.isChecked());
- editor.commit();
- //跳转到第二页
- Intent intent=new Intent(LoginActivity.this,MainActivity.class);
- startActivity(intent);
- }
- });
- }
- //3 下次启动,直接显示用户名和密码-----代码
- private void displayinfo() {
- String strname=getSharedPreferences("myinfo",0).getString("name","");
- String strpwd=getSharedPreferences("myinfo",0).getString("pwd","");
- Boolean status=getSharedPreferences("myinfo",0).getBoolean("st",false);
- if(status==true){
- edit_inputname.setText(strname);
- edit_inputpwd.setText(strpwd);
- check_reme.setChecked(true);
- }else{
- edit_inputname.setText("");
- edit_inputpwd.setText("");
- check_reme.setChecked(false);
- }
- }
- }
复制代码 3.6 MainActivity文件代码:
- package com.example.ts_menu;
- import android.content.Intent;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Adapter;
- import android.widget.Button;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.recyclerview.widget.RecyclerView;
- import androidx.recyclerview.widget.StaggeredGridLayoutManager;
- import com.example.ts_menu.adapter.MemoAdapter;
- import com.example.ts_menu.bean.MemoBean;
- import com.example.ts_menu.db.MyDbHelper;
- import java.util.ArrayList;
- import java.util.List;
- public class MainActivity extends AppCompatActivity {
- //定义对象
- private Button btn_add;
- private RecyclerView recy_view;
- private MyDbHelper mhelper;
- SQLiteDatabase db;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //1 绑定控件
- initView();
- //2 对单击添加单击事件
- btnonclicknext();
- //3完善:从数据库获取数据,显示到RecyclerView控件里面
- recyDisplay();
- }
- //1 绑定控件-----------代码
- private void initView() {
- btn_add=findViewById(R.id.button_add);
- recy_view=findViewById(R.id.recy_view);
- mhelper=new MyDbHelper(MainActivity.this);
- db=mhelper.getWritableDatabase();
- }
- //2 对单击添加单击事件-----代码
- private void btnonclicknext() {
- btn_add.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //单击后跳转到一下页
- Intent intent=new Intent(MainActivity.this,AddInfoActivity.class);
- startActivity(intent);
- finish();
- }
- });
- }
- //3完善:从数据库获取数据,显示到RecyclerView控件里面---------------代码
- private void recyDisplay() {
- //3.1准备数据-----------标题、内容、图片、时间(类)
- List<MemoBean> arr=new ArrayList();
- //从数据库里面取数据了
- Cursor cursor=db.rawQuery("select * from tb_memory",null);
- while(cursor.moveToNext()){
- String mytitle=cursor.getString(cursor.getColumnIndex("title"));
- String mycontent=cursor.getString(cursor.getColumnIndex("content"));
- String myimgpath=cursor.getString(cursor.getColumnIndex("imgpath"));
- String mymtime=cursor.getString(cursor.getColumnIndex("mtime"));
- MemoBean memoBean=new MemoBean(mytitle,mycontent,myimgpath,mymtime);
- arr.add(memoBean);
- }
- cursor.close();
- //3.2 子布局 recy_item
- //3.3 数据------桥(适配器MemoAdapter)----------------子布局
- MemoAdapter adapter=new MemoAdapter(MainActivity.this,arr);
- //3.4 确定显示的方式
- StaggeredGridLayoutManager st=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
- recy_view.setLayoutManager(st);
- //3.5 让数据显示出来
- recy_view.setAdapter(adapter);
- }
- }
复制代码 留意:activity文件中相关的名称报错,得换成本身所创建工程的名字。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |