Android-用两个activity实现少女心爆棚的便签(xutil框架实现)

2024-02-23 15:40

本文主要是介绍Android-用两个activity实现少女心爆棚的便签(xutil框架实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先上图看效果,由于不能上传视频,多图预警,支持增,删,改,查,搜索。由于篇幅有限,有些xml文件不能上传,想要整个工程可以进行下载,或者私信俺。如果不会xutil数据库操作,可以先进行学习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里只贴出,java代码
首先得添加框架依赖

   implementation 'com.facebook.stetho:stetho:1.5.1'implementation 'org.xutils:xutils:3.8.5'implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.2'  //1.0.5及以前版本的老用户升级需谨慎,API改动过大implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.2'  //没有使用特殊Header,可以不加这行

在这里插入图片描述
第一个activity.java代码


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.telephony.CellSignalStrength;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;import com.facebook.stetho.Stetho;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;import org.xutils.DbManager;
import org.xutils.db.Selector;
import org.xutils.ex.DbException;
import org.xutils.x;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;public class MainActivity extends AppCompatActivity {static DbManager.DaoConfig daoConfig;//用来增加数据使用,表示idstatic int nums;//用来表示是新建还是修改static boolean flag=true;//切换布局static boolean flagRecycle=true;static MyAdapter myAdapter;static List<Messages> users;static List<Messages> userstemp;static RecyclerView recyclerView;Messages messages;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Stetho.initializeWithDefaults(this);x.Ext.init(getApplication());x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.x.view().inject(this);//没有用到view注解可以先不用final EditText editText=findViewById(R.id.editText2);//数据库创建daoConfig= new DbManager.DaoConfig().setDbName("messages.db")// 不设置dbDir时, 默认存储在app的私有目录.// .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了..setDbVersion(1).setDbOpenListener(new DbManager.DbOpenListener() {@Overridepublic void onDbOpened(DbManager db) {// 开启WAL, 对写入加速提升巨大db.getDatabase().enableWriteAheadLogging();}}).setDbUpgradeListener(new DbManager.DbUpgradeListener() {@Overridepublic void onUpgrade(DbManager db, int oldVersion, int newVersion) {// TODO: ...// db.addColumn(...);// db.dropTable(...);// ...// or// db.dropDb();}});
//查询所有的数据,并显示到recycleviewDbManager db = null;try {// 删除1db = x.getDb(daoConfig);users= new ArrayList<>();users= db.selector(Messages.class).orderBy("id", true).limit(1000).findAll();
// users= db.selector(User.class).orderBy("id", true).limit(1000).findAll();
// users= db.selector(User.class).findAll();nums=users.size();} catch (DbException e) {e.printStackTrace();return;}//            搜索Button button=findViewById(R.id.button6);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {EditText seachEdit=findViewById(R.id.editText);String seachContent=seachEdit.getText().toString();DbManager db = null;try {// 删除1db = x.getDb(daoConfig);List<Messages> newMessge = new ArrayList<>();String sql="select * from Messages where content like "+"'%"+seachContent+"%'";Cursor cursor= db.execQuery(sql);while (cursor.moveToNext()){Messages m=new Messages();String seachmess=cursor.getString(1);m.setContent(seachmess);String seachdate=cursor.getString(2);m.setDate(seachdate);int seachid=cursor.getInt(0);m.setId(seachid);newMessge.add(m);Log.i("hhhh", "onClick: sousuo"+m.getContent()+" "+m.getDate()+" "+seachContent);}cursor.close();
//                        newMessge=db.selector(Messages.class).orderBy("id", true).where("content","like","%"+seachContent+"%").findAll();users=newMessge;myAdapter.notifyDataSetChanged();seachEdit.setText("");// users= db.selector(User.class).orderBy("id", true).limit(1000).findAll();
// users= db.selector(User.class).findAll();} catch (DbException e) {e.printStackTrace();return;}}});//    跳转到编写页面Button button2 =findViewById(R.id.button2);button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {flag=false;Intent intent=new Intent(MainActivity.this,Main2Activity.class);startActivity(intent);Log.i("hhhhh", "onClick: ");}});myAdapter = new MyAdapter();recyclerView =findViewById(R.id.recyclerView);recyclerView.setAdapter(myAdapter);
//设置边距HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION,30);//top间距stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION,50);//底部间距stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION,50);//左间距stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION,50);//右间距recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));//            刷新RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);refreshLayout.setOnRefreshListener(new OnRefreshListener() {@Overridepublic void onRefresh(RefreshLayout refreshlayout) {DbManager db = null;try {// 删除1db = x.getDb(daoConfig);users= new ArrayList<>();users= db.selector(Messages.class).orderBy("id", true).limit(1000).findAll();
// users= db.selector(User.class).orderBy("id", true).limit(1000).findAll();
// users= db.selector(User.class).findAll();nums=users.size();} catch (DbException e) {e.printStackTrace();return;}myAdapter.notifyDataSetChanged();refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败}});refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {@Overridepublic void onLoadMore(RefreshLayout refreshlayout) {myAdapter.notifyDataSetChanged();refreshlayout.finishLoadMore(2000/*,false*/);//传入false表示加载失败}});//            切换布局Button button4=findViewById(R.id.button4);button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (flagRecycle) {//如果为真,代表线性布局,设置为网格布局flagRecycle=false;recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 2, LinearLayoutManager.VERTICAL, false));}else {flagRecycle=true;recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));}}});}public  class MyViewHolder extends  RecyclerView.ViewHolder{//用来包装每个子项的布局信息public TextView textView1;public TextView textView2;public MyViewHolder(@NonNull View itemView) {super(itemView);textView1=itemView.findViewById(R.id.textView1);textView2=itemView.findViewById(R.id.textView2);}}public  class  MyAdapter extends RecyclerView.Adapter<MyViewHolder>{//用来配合recycleview进行加载子项以及填充子项的数据@Overridepublic MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, final int viewType) {final View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item1,parent,false);final MyViewHolder myViewHolder = new MyViewHolder(view);
//设置子项item监听myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
//                        Messages user=new Messages();
                        user.setId();Intent intent=new Intent(MainActivity.this,Main2Activity.class);int id=myViewHolder.getAdapterPosition();//得到item的编号,位置
//                        String date=users.get(id).getDate();
//                        String content=users.get(id).getContent();
//跳转页面并实现传递参数intent.putExtra("mess",id);
//                        Log.i("hhhh", "onClick: "+id+"  "+users.get(id).getContent());startActivity(intent);}});//              设置监听
//                view.setOnClickListener(new View.OnClickListener() {
//                    @Override
//                    public void onClick(View v) {
                        Messages user=new Messages();
                        user.setId();
//                        Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                        intent.putExtra("user",users.get())
//                        Log.i("hhhh", "onClick: "+view.getTag());
//                        startActivity(intent);
//                    }
//                });return myViewHolder;}@Overridepublic void onBindViewHolder(@NonNull MyViewHolder holder, int position) {//在这里进行子项的文本图片数据填充holder.textView1.setText(users.get(position).getContent());holder.textView2.setText(users.get(position).getDate());}@Overridepublic int getItemCount() {//返回子项的数目,即加载多少列表项return users.size();}}}

第二个activity.java代码

import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;import com.facebook.stetho.Stetho;import org.xutils.DbManager;
import org.xutils.common.util.KeyValue;
import org.xutils.db.sqlite.WhereBuilder;
import org.xutils.ex.DbException;
import org.xutils.x;import java.text.SimpleDateFormat;
import java.util.Date;import static com.c201801020217.tangbo.MainActivity.daoConfig;
import static com.c201801020217.tangbo.MainActivity.flag;
import static com.c201801020217.tangbo.MainActivity.myAdapter;
import static com.c201801020217.tangbo.MainActivity.nums;
import static com.c201801020217.tangbo.MainActivity.users;public class Main2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);Stetho.initializeWithDefaults(this);
//        返回final Button button=findViewById(R.id.button);
//        保存Button button2=findViewById(R.id.button7);
//        删除final Button button3=findViewById(R.id.button5);final TextView textViewDate=findViewById(R.id.textView);final TextView textContent=findViewById(R.id.editText2);SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// HH:mm:ss
//获取当前时间Date date = new Date(System.currentTimeMillis());final String time= simpleDateFormat.format(date);textViewDate.setText(time);
//        Messages messages= (Messages) getIntent().getSerializableExtra("mess");final int id = getIntent().getIntExtra("mess", 0);final int itemid = users.get(id).getId();if(flag) {String dates = users.get(id).getDate();String content = users.get(id).getContent();textViewDate.setText(dates);textContent.setText(content);}//        保存button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {DbManager db = null;try {if (flag) {//如果为真,代表是点击item进来的,要用更新语句而不是插入语句
//条件更新String newcontent=textContent.getText().toString();db = x.getDb(daoConfig);db.update(Messages.class, WhereBuilder.b("id", "=", itemid),
// WhereBuilder.b("id", "=", 1).and("isAdmin", "=", true).,new KeyValue("content",newcontent), new KeyValue("date", time));users.get(id).setDate(time);users.get(id).setContent(newcontent);} else {db = x.getDb(daoConfig);Messages user = new Messages();//new 一个对象,相当于是表中的一行,相当于一条记录//相当于插入数据user.setId(nums + 1);nums++;user.setDate(time);user.setContent(textContent.getText().toString());db.save(user);//写入数据,保存到数据库flag=true;users.add(user);
//                       myAdapter.notifyDataSetChanged();}finish();} catch (DbException e) {e.printStackTrace();return;}}});
//        删除button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//条件删除DbManager db = null;try {db = x.getDb(daoConfig);db.delete(Messages.class,WhereBuilder.b("id", "=", itemid));users.remove(id);} catch (DbException e) {e.printStackTrace();return;}finish();}});
//返回button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}
}

数据库使用的java类

import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;import java.util.Date;@Table(name = "Messages")
public class Messages {@Column(name = "id",isId=true)private int id;@Column(name = "date")private String date;@Column(name = "content")private String content;public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public int getId() {return id;}public void setId(int id) {this.id = id;}
}

这篇关于Android-用两个activity实现少女心爆棚的便签(xutil框架实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739112

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一