交易平台 app

2018-04-21  本文已影响0人  追忆__

最近的国创项目需要做一个交易平台app ,在这里把遇到的东西记录下来。

首先找到了几个资料,如下:

1 Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架

https://blog.csdn.net/teamomylife/article/details/55251895

2 给 Android 开发者的 RxJava 详解

http://gank.io/post/560e15be2dca930e00da1083

3 你真的会用Retrofit2吗?Retrofit2完全教程

https://www.jianshu.com/p/308f3c54abdd

4 MVP开发模式的交易市场APP

https://github.com/flyleft/xmarket/blob/master/README.md

5 Retrofit使用指南

https://www.jianshu.com/p/91ac13ed076d

首先按照文1的方法,建立了测试项目,在RetrofitService的建立过程中,发现有些类没有impor,后来发现:

当在build.gradle中引入依赖并sync后,AS会自动识别出代码中未声明的类,按Alt+Enter可以直接补齐import。

retrofit2的Call, 据说跟OkHttp的用法一样,虽然我两个都不知道,但是貌似可以按照“请求”的意思理解。


public interface RetrofitService {

@GET("book/search")

Call getSearchBook(@Query("q") String name,

@Query("tag") String tag,

@Query("start")int start,

@Query("count")int count);

}

Call后面的尖括号表示Call请求的数据类型。 BOOK为Call的泛型
RetrofitHelper中使用了Retrofit+OkHttp,可以参考文5。

将文1的所有代码拷贝到AS中后,发现BOOK自动导入的内容有误,去文1的GitHub上复制了BOOK的实现才OK.
自己加上了一个登录界面,使用的是AS自带的login模板,为简单起见,将注册功能直接写成了页面跳转,最终功能有效。


图片.png

baseUrl在RetrofitHelper中。
文1的示例程序中,MVP是如下实现:Activity由P(即BookPresenter,Presenter则是P包含的通用功能,类BookPresenter是对这些功能的具体实现)控制,

修改4中的程序:
xmarket后端程序中 接口的格式均在controller中。前端接口则在network中的Req文件中,而Req的调用则在各个modelImpl中。 modelImpl的调用则在PresenterImpl中。

测试过程中使用POSTman测试后端接口,发现会出现 图片.png
这是因为postman显示格式不对

但是调试时发现后端刚收到前端的message时就是NULL,怀疑是类之间无法直接赋值。 只传递基本类型可以传递, 考虑将各个参数分开传递,并在后端存入数据库前,为其分配id。或者参考商品发布时的写法

貌似trade的id一直是null 没有id 一直到后端的tradebean,也没有id,这是因为mongodb的id是在插入之后自动分配的。 所以可以认为message在使用之前不需要考虑id。 打算第二天直接拆分参数!

拆分参数后,交易功能可用。考虑添加计步功能和转账功能:
页面跳转的写法:从MainActivity跳至Main2Activity:

button2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //在按钮响应函数中添加如下两句话就ok了
        Intent intent=new Intent(MainActivity.this,Main2Activity.class);
        startActivity(intent);

    }
});

在github上找到一个计步的项目:
https://github.com/linglongxin24/DylanStepCount
最终成功移植到本项目

为了实现运动币的刷新查询,模仿xmarket项目,使用SwipeRefreshLayout完成下拉刷新。相关资料如下,该资料还考虑了刷新资源的互斥操作,即只能当上次刷新完成后才能进行下次刷新。
Android开发之SwipeRefreshLayout实现下拉刷新
https://www.jianshu.com/p/97ab87cfce47
运动币的查询则参考用户交易数据的查询。 UserTradePresenterImpl

context理解:https://www.jianshu.com/p/94e0f9ab3f1d
https://blog.csdn.net/guolin_blog/article/details/47028975

安卓相对布局属性:
https://www.cnblogs.com/devinzhang/archive/2012/09/30/2709017.html

控件的出现和消失:
XML 里面:
android:visibility="visible" (其他参数为invisible 、gone)
代码里面:
obj.setVisibility(View.VISIBLE);

遇到需要将TextView中的文字转换为数字的场景,需要使用如下语句:
data=Integer.parseInt(myEditText.getText().toString());
int转换为string:
Integer.toString(step_toCoin)

xmarket项目中,主页上的4个界面分别在各个fragment中。

由于前后端Team的类型不一样,因此考虑在后端进行流操作,返回前端可识别的类型。流操作资料:https://blog.csdn.net/u010425776/article/details/52344425
采用map方法,map函数需要Lambda表达式,相关资料:https://blog.csdn.net/sanchan/article/details/70753645

查看本校商品时,后端返回给前端的URL为如下格式:


图片.png

而主页的分类中的url为:


图片.png

而两者在请求图片时调用同一个fresco函数
因此将后端中储存的url加上 /api/v1/file/img ,并将图片库复制到pic_home
最终采用前端直接在公网上下载分类图片

上一篇下一篇

猜你喜欢

热点阅读