Android Studio实现二手交易系统,让闲置物品动起来~
转让闲置物品:通过二手交易网站,实现非货币资产的流动增值。 #生活技巧# #理财技巧# #财富增值秘籍#
项目目录 一、项目概述二、开发环境三、详细设计3.1、数据库设计3.2、网络通信3.2.1、申请API KEY3.2.2、HTTP请求3.2.3、Gson解析 3.3、四大组件应用 四、运行演示五、源码获取一、项目概述
二手交易系统使用了Android四大组件、Fragment、SQLite数据库、多线程和网络通信等技术。用户伴随着欢迎页面进入应用,然后注册和登录,可以记住密码,下次就无需输入。在首页可以看到学习、生活、体育和电子用品四大物品分类,点击可以查看每一类别的物品列表,单击物品列表进入物品详情页面,可以对物品进行评论和收藏。在发布页面可以上传自己闲置物品的信息,包括图片、类别、名称、详情、价格和自己的联系方式等,然后发布即可。在个人信息页面可以查看自己的闲置物品、自己收藏的物品以及自己的评论,在自己的物品和自己的收藏页面,依然可以单击进入物品详情页面。还可以查看软件版本和分享软件,点击每日名言可以推送名言警句的通知,最后可以利用广播机制退出登录。
本应用的通用逻辑就是:物品/评论的发布者可以对自己发布的物品/评论进行长按删除,但无法删除他人发布的物品/评论;并且当物品删除的同时,物品的所有收藏和所有评论也会一并删除,这符合正常逻辑。总之,二手交易系统覆盖了安卓所有基础知识点,在页面绘制上也采用了material设计,使用了精美图标,给予用户非常好的使用体验。
二、开发环境
三、详细设计
3.1、数据库设计
数据库设计决定了应用的功能逻辑,系统包含四张数据表:用户表、物品表、评论表和收藏表。每个用户可以发布多个物品,可以发表多个评论,还可以收藏多个物品,因此表之间都是多对多的关系。
创建数据库和数据表都讲过很多遍,也是安卓开发必备技能。建库建表后就要新建对数据表的操作类,比如UserDao、GoodsDao等。通过继承SQLiteOpenHelper类,读写数据库,定义对表格数据的增删改查方法。
// 数据库首次创建时创建数据表 @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_USER); db.execSQL(CREATE_TABLE_GOODS); db.execSQL(CREATE_TABLE_COMMENT); db.execSQL(CREATE_TABLE_SAVE); } 12345678
3.2、网络通信
3.2.1、申请API KEY注册和登录天行数据官网(https://www.tianapi.com/)。
搜索“励志古言”接口,然后申请该接口。
点击右上角控制台,然后在我的免费接口中查看接口的剩余次数。
在我的秘钥KEY中可以查看自己的API KEY,将其复制粘贴到项目的HttpUtil.java文件中的API_KEY字符串中。
创建一个简单的HTTP客户端工具类,可以用来向服务端发送HTTP请求并处理返回的响应。在代码中,sendOkHttpRequest方法接受两个参数:一个是包含API URL的字符串address,另一个是okhttp3.Callback接口的实现类callback,它定义了当请求完成时如何处理响应和错误。如果模拟器无网络,就会请求失败,直接返回,并作出提示。只要有网络,就会得到服务器返回的数据,之后调用parseShowData方法解析数据。
/* 每日名言*/ private void showSaying() { // 客户端向服务器发送Http的Get请求 HttpUtil.sendOkHttpRequest(HttpUtil.INDEX_URI, new okhttp3.Callback() { @Override public void onFailure(Call call, IOException e) { // 如果模拟器无网络,就会请求失败,直接返回 getActivity().runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getContext(), "模拟器无网络", Toast.LENGTH_SHORT).show(); } }); return; } @Override public void onResponse(Call call, Response response) throws IOException { // 如果api次数充足,得到服务器返回的具体内容 String result = response.body().string(); // 解析json字符串 parseShowData(result); } }); } 12345678910111213141516171819202122232425 3.2.3、Gson解析
parseShowData方法是设计来解析从天工励志古言API获取的JSON结果,并据此执行后续操作。该方法接收一个String类型的参数result,它代表了API返回的JSON格式的数据。
首先,使用Gson库将这个JSON字符串反序列化为Saying对象。这里Saying是一个自定义的名言类,它有相应的字段和构造函数来映射JSON数据。
然后,通过getActivity().runOnUiThread(new Runnable() {...}方法确保后续的UI更新操作在主线程上执行。这是因为Android不允许在非主线程上直接操作UI组件。
在Runnable的run方法内部,代码首先检查解析后的saying对象是否为null以及它的状态码是否为200。状态码200意味着API调用成功。如果这些条件中的任何一个不满足,就会弹出一个Toast通知,告知用户"当前KEY不可用或API可用次数不足"。
如果解析成功,代码将继续执行,获取saying对象中的ResultDTO实例,并将其传递给sendNotification方法,在应用内显示推送通知。
// 解析JSON字符串 private void parseShowData(String result) { Saying saying = new Gson().fromJson(result, Saying.class); getActivity().runOnUiThread(new Runnable() { @Override public void run() { // 如果解析结果为null,或者结果码不为200,则当前key不可用或者API可用次数不足 if (saying == null || saying.getCode() != 200) { Toast.makeText(getContext(), "当前KEY不可用或API可用次数不足", Toast.LENGTH_SHORT).show(); return; } Saying.ResultDTO resultDTO = saying.getResult(); sendNotification(resultDTO); } }); } 12345678910111213141516
3.3、四大组件应用
Activity:在欢迎、注册、登录、物品详情等活动中都用到了Activity跳转、传值等功能。Service:在MyIntentService类中的onHandleIntent(Intent intent)中打印子线程的ID。ContentProvider:在ContentProvider类中重写了query和getType等方法,提供其他应用访问本应用数据库的接口。Broadcast:在MineFragment类中发送自定义广播,在BaseActivity中定义和注册接收器接收广播,可以让当前登录用户强制下线。四、运行演示
物品/评论的发布者可以对自己发布的物品/评论进行长按删除,但无法删除他人发布的物品/评论;并且当物品删除的同时,物品的所有收藏和所有评论也会一并删除,这符合正常逻辑。上传的图片不宜过大,确保在300KB以下,否则因为模拟器内存不足无法渲染。电脑上传图片到模拟器相册,只需要拖拽本地图片到模拟器中即可。每日名言根据详细设计中的申请API KEY替换秘钥,建议使用夜神模拟器运行,能访问网络。五、源码获取
为什么说其实取决于自己?那些断子绝孙的人,若不是因为今生作恶多端,就是由于前世恶行的报应。坦荡无私的上天,决不会苛待任何人。既然作恶已招致灾殃,修善自然就会获得福佑。比如老虎颈下的金铃,自己系上还要自己去解。又像寒潭之中的水冻结成冰,也一样可以融化为水。所以人的命运其实全由自己把握,并非取决于天意。
网址:Android Studio实现二手交易系统,让闲置物品动起来~ https://www.yuejiaxmz.com/news/view/295657
相关内容
基于Android的校园二手闲置物品交易系统设计与实现基于Android studio的二手交易平台
二手闲置物品交易平台
基于SpringBoot+Vue大学生二手闲置物品置换交易管理系统的设计与实现
二手闲置物品交易平台哪个好
【毕业设计/课程设计】基于android的二手物品交易平台设计与实现(源码+文章) 含Web管理端
闲置物品置换交易平台 让“静物”动起来
基于android校园旧货交易手机软件系统设计.doc
校园闲置物品交易系统国内外研究现状
高校学生二手物品交易系统的设计与实现