Android Studio实现二手交易系统,让闲置物品动起来~

一、项目概述

二手交易系统使用了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);
    }

3.2、网络通信

3.2.1、申请API KEY

注册和登录天行数据官网(https://www.tianapi.com/)。
在这里插入图片描述

搜索“励志古言”接口,然后申请该接口。
在这里插入图片描述

点击右上角控制台,然后在我的免费接口中查看接口的剩余次数。
在这里插入图片描述

我的秘钥KEY中可以查看自己的API KEY,将其复制粘贴到项目的HttpUtil.java文件中的API_KEY字符串中。
在这里插入图片描述

3.2.2、HTTP请求

创建一个简单的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);
            }
        });
    }

3.2.3、Gson解析

parseShowData方法是设计来解析从天工励志古言API获取的JSON结果,并据此执行后续操作。该方法接收一个String类型的参数result,它代表了API返回的JSON格式的数据。

  • 首先,使用Gson库将这个JSON字符串反序列化为Saying对象。这里Saying是一个自定义的名言类,它有相应的字段和构造函数来映射JSON数据。

  • 然后,通过getActivity().runOnUiThread(new Runnable() {...}方法确保后续的UI更新操作在主线程上执行。这是因为Android不允许在非主线程上直接操作UI组件。

  • Runnablerun方法内部,代码首先检查解析后的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);
            }
        });
    }

3.3、四大组件应用

  • Activity:在欢迎、注册、登录、物品详情等活动中都用到了Activity跳转、传值等功能。
  • Service:在MyIntentService类中的onHandleIntent(Intent intent)中打印子线程的ID。
  • ContentProvider:在ContentProvider类中重写了querygetType等方法,提供其他应用访问本应用数据库的接口。
  • Broadcast:在MineFragment类中发送自定义广播,在BaseActivity中定义和注册接收器接收广播,可以让当前登录用户强制下线。

四、运行演示

  • 物品/评论的发布者可以对自己发布的物品/评论进行长按删除,但无法删除他人发布的物品/评论;并且当物品删除的同时,物品的所有收藏和所有评论也会一并删除,这符合正常逻辑。
  • 上传的图片不宜过大,确保在300KB以下,否则因为模拟器内存不足无法渲染。
  • 电脑上传图片到模拟器相册,只需要拖拽本地图片到模拟器中即可。
  • 每日名言根据详细设计中的申请API KEY替换秘钥,建议使用夜神模拟器运行,能访问网络。

Android Studio实现二手交易系统

五、源码获取

1️⃣直接点击右侧链接下载源代码Android二手交易系统源码
2️⃣直接点击右侧链接下载课设报告Android二手交易系统报告
3️⃣关注公众号 萌新加油站后台回复:二手

🚀Android项目专栏有你错过的精彩内容
Android Studio实现订餐系统
Android Studio实现考试管理系统
Android Studio实现图书馆订座系统
Android Studio实现学生信息管理系统
Android Stduio实现天气预报系统

为什么说其实取决于自己?那些断子绝孙的人,若不是因为今生作恶多端,就是由于前世恶行的报应。坦荡无私的上天,决不会苛待任何人。既然作恶已招致灾殃,修善自然就会获得福佑。比如老虎颈下的金铃,自己系上还要自己去解。又像寒潭之中的水冻结成冰,也一样可以融化为水。所以人的命运其实全由自己把握,并非取决于天意。

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

振华OPPO

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值