├── .gitignore
├── .idea
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── dictionaries
│ └── PetterChen.xml
├── encodings.xml
├── gradle.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── peter
│ │ └── schoolmarket
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── mock_img
│ │ │ ├── apple_phone.jpg
│ │ │ ├── battledore.jpg
│ │ │ ├── book.jpg
│ │ │ ├── mac_computer.jpg
│ │ │ ├── sort_avater_cluo.jpg
│ │ │ ├── sort_body.jpg
│ │ │ ├── sort_clothes.jpeg
│ │ │ └── table_lamp.jpeg
│ ├── ic_launcher-web.png
│ ├── java
│ │ └── com
│ │ │ └── peter
│ │ │ └── schoolmarket
│ │ │ ├── adapter
│ │ │ └── recycler
│ │ │ │ ├── DividerItemGridDecoration.java
│ │ │ │ ├── DividerItemNormalDecoration.java
│ │ │ │ ├── RecyclerCommonAdapter.java
│ │ │ │ └── RecyclerViewHolder.java
│ │ │ ├── application
│ │ │ ├── AppConf.java
│ │ │ └── MarketApp.java
│ │ │ ├── data
│ │ │ ├── dto
│ │ │ │ └── Result.java
│ │ │ ├── pojo
│ │ │ │ ├── Msg.java
│ │ │ │ ├── Notice.java
│ │ │ │ ├── Order.java
│ │ │ │ ├── Trade.java
│ │ │ │ ├── TradeTag.java
│ │ │ │ └── User.java
│ │ │ └── storage
│ │ │ │ ├── LoginInfoExecutor.java
│ │ │ │ └── ManageLoginInfo.java
│ │ │ ├── di
│ │ │ ├── components
│ │ │ │ ├── FindFragmentComponent.java
│ │ │ │ ├── LoginRegisterComponent.java
│ │ │ │ └── RegisterNextComponent.java
│ │ │ ├── modules
│ │ │ │ ├── FindFragmentModule.java
│ │ │ │ ├── LoginRegisterModule.java
│ │ │ │ └── RegisterNextModule.java
│ │ │ └── qualifiers
│ │ │ │ ├── LoginProgress.java
│ │ │ │ └── RegisterProgress.java
│ │ │ ├── mock
│ │ │ ├── NoticeMock.java
│ │ │ ├── TradeMock.java
│ │ │ └── UserMock.java
│ │ │ ├── mvp
│ │ │ ├── base
│ │ │ │ ├── BaseActivity.java
│ │ │ │ └── BaseFragment.java
│ │ │ ├── find
│ │ │ │ ├── FindFragment.java
│ │ │ │ ├── FindModel.java
│ │ │ │ ├── FindPresenter.java
│ │ │ │ ├── IFindModel.java
│ │ │ │ ├── IFindPresenter.java
│ │ │ │ ├── IFindView.java
│ │ │ │ └── IGainListener.java
│ │ │ ├── login
│ │ │ │ ├── ILoginRegisterPresenter.java
│ │ │ │ ├── ILoginRegisterView.java
│ │ │ │ ├── IUserModel.java
│ │ │ │ ├── LoginActivity.java
│ │ │ │ ├── LoginRegisterPresenter.java
│ │ │ │ ├── OnLoginListener.java
│ │ │ │ ├── OnRegisterListener.java
│ │ │ │ ├── UserModel.java
│ │ │ │ └── register
│ │ │ │ │ └── next
│ │ │ │ │ ├── IRegisterNextModel.java
│ │ │ │ │ ├── IRegisterNextPresenter.java
│ │ │ │ │ ├── IRegisterNextView.java
│ │ │ │ │ ├── OnRegisterNextListener.java
│ │ │ │ │ ├── RegisterNextActivity.java
│ │ │ │ │ ├── RegisterNextModel.java
│ │ │ │ │ └── RegisterNextPresenter.java
│ │ │ ├── main
│ │ │ │ ├── IMainListener.java
│ │ │ │ ├── IMainModel.java
│ │ │ │ ├── IMainPresenter.java
│ │ │ │ ├── IMainView.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── MainModel.java
│ │ │ │ ├── MainPresenter.java
│ │ │ │ ├── about
│ │ │ │ │ └── AboutActivity.java
│ │ │ │ └── trade
│ │ │ │ │ ├── DrawerTradeActivity.java
│ │ │ │ │ ├── DrawerTradeModel.java
│ │ │ │ │ ├── DrawerTradePresenter.java
│ │ │ │ │ ├── IDrawerTradeListener.java
│ │ │ │ │ ├── IDrawerTradeModel.java
│ │ │ │ │ ├── IDrawerTradePresenter.java
│ │ │ │ │ └── IDrawerTradeView.java
│ │ │ ├── more
│ │ │ │ ├── IMoreListener.java
│ │ │ │ ├── IMoreModel.java
│ │ │ │ ├── IMorePresenter.java
│ │ │ │ ├── IMoreView.java
│ │ │ │ ├── MoreFragment.java
│ │ │ │ ├── MoreModel.java
│ │ │ │ ├── MorePresenter.java
│ │ │ │ └── notice
│ │ │ │ │ ├── add
│ │ │ │ │ ├── INoticeAddListener.java
│ │ │ │ │ ├── INoticeAddModel.java
│ │ │ │ │ ├── INoticeAddPresenter.java
│ │ │ │ │ ├── INoticeAddView.java
│ │ │ │ │ ├── NoticeAddActivity.java
│ │ │ │ │ ├── NoticeAddModel.java
│ │ │ │ │ └── NoticeAddPresenter.java
│ │ │ │ │ ├── detail
│ │ │ │ │ └── NoticeDetailActivity.java
│ │ │ │ │ └── my
│ │ │ │ │ ├── INoticeMyListener.java
│ │ │ │ │ ├── INoticeMyModel.java
│ │ │ │ │ ├── INoticeMyPresenter.java
│ │ │ │ │ ├── INoticeMyView.java
│ │ │ │ │ ├── NoticeMyActivity.java
│ │ │ │ │ ├── NoticeMyModel.java
│ │ │ │ │ └── NoticeMyPresenter.java
│ │ │ ├── msg
│ │ │ │ ├── IMsgListener.java
│ │ │ │ ├── IMsgModel.java
│ │ │ │ ├── IMsgPresenter.java
│ │ │ │ ├── IMsgView.java
│ │ │ │ ├── ManageMsgCount.java
│ │ │ │ ├── MsgFragment.java
│ │ │ │ ├── MsgModel.java
│ │ │ │ ├── MsgPresenter.java
│ │ │ │ ├── MsgService.java
│ │ │ │ └── detail
│ │ │ │ │ └── MsgDetailActivity.java
│ │ │ ├── sort
│ │ │ │ ├── ITradeSortPresenter.java
│ │ │ │ ├── ITradeSortView.java
│ │ │ │ ├── TradeSortFragment.java
│ │ │ │ ├── TredeSortPresenter.java
│ │ │ │ └── trades
│ │ │ │ │ ├── ITradeTagDetailListener.java
│ │ │ │ │ ├── ITradeTagDetailModel.java
│ │ │ │ │ ├── ITradeTagDetailPresenter.java
│ │ │ │ │ ├── ITradeTagDetailView.java
│ │ │ │ │ ├── TradeTagDetailActivity.java
│ │ │ │ │ ├── TradeTagDetailModel.java
│ │ │ │ │ └── TradeTagDetailPresenter.java
│ │ │ ├── splash
│ │ │ │ └── SplashActivity.java
│ │ │ ├── test
│ │ │ │ ├── TestActivity.java
│ │ │ │ └── TestFragment.java
│ │ │ └── trade
│ │ │ │ ├── add
│ │ │ │ ├── ITradeAddListener.java
│ │ │ │ ├── ITradeAddModel.java
│ │ │ │ ├── ITradeAddPresenter.java
│ │ │ │ ├── ITradeAddView.java
│ │ │ │ ├── TradeAddActivity.java
│ │ │ │ ├── TradeAddModel.java
│ │ │ │ └── TradeAddPresenter.java
│ │ │ │ └── detail
│ │ │ │ ├── ITradeDetailListener.java
│ │ │ │ ├── ITradeDetailModel.java
│ │ │ │ ├── ITradeDetailPresenter.java
│ │ │ │ ├── ITradeDetailView.java
│ │ │ │ ├── TradeDetailActivity.java
│ │ │ │ ├── TradeDetailModel.java
│ │ │ │ └── TradeDetailPresenter.java
│ │ │ ├── network
│ │ │ ├── NetReturn.java
│ │ │ ├── NoticeReq.java
│ │ │ ├── ReqExecutor.java
│ │ │ ├── RetrofitConf.java
│ │ │ ├── RetrofitUtils.java
│ │ │ ├── TradeReq.java
│ │ │ └── UserReq.java
│ │ │ └── util
│ │ │ ├── BroadUtils.java
│ │ │ ├── MsgUtil.java
│ │ │ ├── PollingUtils.java
│ │ │ ├── ResultInterceptor.java
│ │ │ ├── SocketUtils.java
│ │ │ ├── TimeUtils.java
│ │ │ └── TradeTagUtils.java
│ └── res
│ │ ├── drawable-hdpi
│ │ ├── ic_empty.png
│ │ ├── ic_search.png
│ │ ├── sort_book.jpg
│ │ ├── sort_computer.jpg
│ │ ├── sort_esercise.jpg
│ │ ├── sort_life.jpg
│ │ └── sort_phone.jpg
│ │ ├── drawable-v21
│ │ ├── ic_back.png
│ │ ├── ic_menu_camera.xml
│ │ ├── ic_menu_gallery.xml
│ │ ├── ic_menu_manage.xml
│ │ ├── ic_menu_send.xml
│ │ ├── ic_menu_share.xml
│ │ ├── ic_menu_slideshow.xml
│ │ └── ic_small_cancel.png
│ │ ├── drawable-xhdpi
│ │ ├── ic_action_navigation_chevron_left.png
│ │ ├── ic_search.png
│ │ └── main_bottom_wish.png
│ │ ├── drawable-xxhdpi
│ │ ├── ic_arrow_left.png
│ │ ├── ic_launcher.png
│ │ ├── ic_search.png
│ │ ├── ic_send_msg.png
│ │ ├── ic_submit.png
│ │ ├── icon_placeholder.png
│ │ └── trade_add_img.jpg
│ │ ├── drawable-xxxhdpi
│ │ └── phone_splash.png
│ │ ├── drawable
│ │ ├── button_background.xml
│ │ ├── circle_pic_press.png
│ │ ├── circle_pic_selector.xml
│ │ ├── divider_bg.xml
│ │ ├── ic_back.png
│ │ ├── ic_plus_black.png
│ │ ├── ic_plus_white.png
│ │ ├── ic_register.png
│ │ ├── ic_right_enter.png
│ │ ├── ic_search.png
│ │ ├── ic_search_back.png
│ │ ├── ic_search_cancel.png
│ │ ├── ic_small_cancel.png
│ │ ├── main_about.png
│ │ ├── main_author.png
│ │ ├── main_bottom_find.png
│ │ ├── main_bottom_more.png
│ │ ├── main_bottom_msg.png
│ │ ├── main_bottom_trade.png
│ │ ├── main_bought.png
│ │ ├── main_boy.png
│ │ ├── main_buying.png
│ │ ├── main_exit.png
│ │ ├── main_girl.png
│ │ ├── main_like.png
│ │ ├── main_notice.png
│ │ ├── main_person.png
│ │ ├── main_selling.png
│ │ ├── main_setting.png
│ │ ├── main_share.png
│ │ ├── main_sold.png
│ │ ├── msg_pic_selector.xml
│ │ ├── search_cursor.xml
│ │ ├── side_nav_bar.xml
│ │ ├── sort_pic_selector.xml
│ │ ├── splash_loading.gif
│ │ ├── square_default.png
│ │ ├── square_pic_selector.xml
│ │ ├── square_press.png
│ │ ├── trade_tag_detail_next.png
│ │ └── trade_tag_search_cursor.xml
│ │ ├── layout
│ │ ├── about_activity.xml
│ │ ├── about_content.xml
│ │ ├── drawer_trade_activity.xml
│ │ ├── drawer_trade_bought_item.xml
│ │ ├── drawer_trade_buying_item.xml
│ │ ├── drawer_trade_content.xml
│ │ ├── drawer_trade_selling_item.xml
│ │ ├── drawer_trade_sold_item.xml
│ │ ├── find_fragment.xml
│ │ ├── find_item.xml
│ │ ├── login_activity.xml
│ │ ├── login_login_view.xml
│ │ ├── login_register_view.xml
│ │ ├── main_activity.xml
│ │ ├── main_bar.xml
│ │ ├── main_content.xml
│ │ ├── main_nav_header.xml
│ │ ├── message_fragment.xml
│ │ ├── message_item.xml
│ │ ├── more_fragment.xml
│ │ ├── more_item.xml
│ │ ├── msg_detail_activity.xml
│ │ ├── msg_detail_content.xml
│ │ ├── notice_add_activity.xml
│ │ ├── notice_add_content.xml
│ │ ├── notice_detail_activity.xml
│ │ ├── notice_detail_content.xml
│ │ ├── notice_my_activity.xml
│ │ ├── notice_my_content.xml
│ │ ├── notice_my_item.xml
│ │ ├── register_next_activity.xml
│ │ ├── sort_fragment.xml
│ │ ├── sort_item.xml
│ │ ├── splash_activity.xml
│ │ ├── test_activity.xml
│ │ ├── test_fragment.xml
│ │ ├── test_msg_fragment.xml
│ │ ├── test_msg_item.xml
│ │ ├── trade_add_activity.xml
│ │ ├── trade_add_content.xml
│ │ ├── trade_detail_activity.xml
│ │ ├── trade_detail_content.xml
│ │ ├── trade_tag_detail_activity.xml
│ │ ├── trade_tag_detail_content.xml
│ │ └── trade_tag_detail_item.xml
│ │ ├── menu
│ │ ├── main.xml
│ │ ├── main_activity_drawer.xml
│ │ └── search_item.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── values-v21
│ │ └── styles.xml
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ └── values
│ │ ├── android_material_design_colours.xml
│ │ ├── arrays.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── drawables.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── peter
│ └── schoolmarket
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/dictionaries/PetterChen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | Android
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\Programs\Android\sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/peter/schoolmarket/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.peter.schoolmarket", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/apple_phone.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/apple_phone.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/battledore.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/battledore.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/book.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/book.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/mac_computer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/mac_computer.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/sort_avater_cluo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/sort_avater_cluo.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/sort_body.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/sort_body.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/sort_clothes.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/sort_clothes.jpeg
--------------------------------------------------------------------------------
/app/src/main/assets/mock_img/table_lamp.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/assets/mock_img/table_lamp.jpeg
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/application/AppConf.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.application;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/13.
5 | */
6 |
7 | public interface AppConf {
8 |
9 | boolean useMock=true;//是否使用本地离线数据,不与服务器进行交互;true表示使用离线,false使用服务器数据
10 |
11 | String IP = "127.0.0.1";//服务器地址
12 |
13 | int PORT = 8080;//服务器端口号
14 |
15 | String BASE_URL="http://118.202.41.83:8080/";//服务器的地址及端口118.202.41.83
16 |
17 | long Msg_Interval=30L;//轮询获取消息的时间间隔.(秒)
18 |
19 | int size=8;//每个页面加载的数据长度
20 |
21 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/application/MarketApp.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.application;
2 |
3 | import android.app.Application;
4 |
5 | import com.facebook.drawee.backends.pipeline.Fresco;
6 |
7 | import io.realm.Realm;
8 | import io.realm.RealmConfiguration;
9 |
10 | /**
11 | * Created by PetterChen on 2017/4/10.
12 | */
13 |
14 | public class MarketApp extends Application {
15 | private static final String TAG = "MarketApp";
16 | private static MarketApp instance;
17 | public static MarketApp getInstance() {
18 | return instance;
19 | }
20 |
21 | @Override
22 | public void onCreate() {
23 | super.onCreate();
24 | instance = this;
25 | initialize();
26 | }
27 |
28 | private void initialize() {
29 | //fresco初始化
30 | Fresco.initialize(this);
31 | //Realm初始化
32 | Realm.init(this);
33 | RealmConfiguration config = new RealmConfiguration.Builder().build();
34 | Realm.setDefaultConfiguration(config);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/dto/Result.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.dto;
2 |
3 | import com.peter.schoolmarket.network.NetReturn;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/13.
7 | */
8 |
9 | public class Result {
10 | private int code;//返回码
11 | private String msg;//返回信息
12 | private T data;//返回数据
13 | public Result(T data, int code, String msg) {
14 | this.data = data;
15 | this.code = code;
16 | this.msg = msg;
17 | }
18 |
19 | public Result() {
20 | }
21 |
22 | public Result result(NetReturn netReturn){
23 | this.code=netReturn.code();
24 | this.msg=netReturn.msg();
25 | return this;
26 | }
27 |
28 | @Override
29 | public String toString() {
30 | return "Result{" +
31 | "code=" + code +
32 | ", msg='" + msg + '\'' +
33 | ", data=" + data +
34 | '}';
35 | }
36 |
37 | public void setCode(int code) {
38 | this.code = code;
39 | }
40 |
41 | public void setMsg(String msg) {
42 | this.msg = msg;
43 | }
44 |
45 | public void setData(T data) {
46 | this.data = data;
47 | }
48 |
49 | public int getCode() {
50 | return code;
51 | }
52 |
53 | public String getMsg() {
54 | return msg;
55 | }
56 |
57 | public T getData() {
58 | return data;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/pojo/Msg.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.pojo;
2 |
3 | import java.io.Serializable;
4 |
5 | import io.realm.RealmObject;
6 | import io.realm.annotations.PrimaryKey;
7 |
8 | /**
9 | * Created by PetterChen on 2017/5/17.
10 | */
11 |
12 | public class Msg extends RealmObject implements Serializable {
13 | @PrimaryKey
14 | private int id;
15 | private int tradeId;
16 | private int authorId;
17 | private String title;
18 | private String content;
19 | private long createTime;
20 |
21 | public int getId() {
22 | return id;
23 | }
24 |
25 | public void setId(int id) {
26 | this.id = id;
27 | }
28 |
29 | public int getTradeId() {
30 | return tradeId;
31 | }
32 |
33 | public void setTradeId(int tradeId) {
34 | this.tradeId = tradeId;
35 | }
36 |
37 | public int getAuthorId() {
38 | return authorId;
39 | }
40 |
41 | public void setAuthorId(int authorId) {
42 | this.authorId = authorId;
43 | }
44 |
45 | public String getTitle() {
46 | return title;
47 | }
48 |
49 | public void setTitle(String title) {
50 | this.title = title;
51 | }
52 |
53 | public String getContent() {
54 | return content;
55 | }
56 |
57 | public void setContent(String content) {
58 | this.content = content;
59 | }
60 |
61 | public long getCreateTime() {
62 | return createTime;
63 | }
64 |
65 | public void setCreateTime(long createTime) {
66 | this.createTime = createTime;
67 | }
68 |
69 | @Override
70 | public String toString() {
71 | return "Msg{" +
72 | "id=" + id +
73 | ", authorId=" + authorId +
74 | ", title='" + title + '\'' +
75 | ", content='" + content + '\'' +
76 | ", createTime=" + createTime +
77 | '}';
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/pojo/Notice.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.pojo;
2 |
3 | import java.io.Serializable;
4 |
5 | import io.realm.RealmObject;
6 | import io.realm.annotations.Ignore;
7 | import io.realm.annotations.PrimaryKey;
8 |
9 | /**
10 | * Created by PetterChen on 2017/5/5.
11 | */
12 |
13 | public class Notice extends RealmObject implements Serializable {
14 | @PrimaryKey
15 | private int id;//N001
16 | private int authorId;
17 | private String title;
18 | private String content;
19 | private long createTime;
20 | @Ignore
21 | private boolean releaseCheck;//为了在发布时方便检查数据完整性,不存储在数据库中
22 |
23 | public int getId() {
24 | return id;
25 | }
26 |
27 | public void setId(int id) {
28 | this.id = id;
29 | }
30 |
31 | public int getAuthorId() {
32 | return authorId;
33 | }
34 |
35 | public void setAuthorId(int authorId) {
36 | this.authorId = authorId;
37 | }
38 |
39 | public String getTitle() {
40 | return title;
41 | }
42 |
43 | public void setTitle(String title) {
44 | this.title = title;
45 | }
46 |
47 | public String getContent() {
48 | return content;
49 | }
50 |
51 | public void setContent(String content) {
52 | this.content = content;
53 | }
54 |
55 | public long getCreateTime() {
56 | return createTime;
57 | }
58 |
59 | public void setCreateTime(long createTime) {
60 | this.createTime = createTime;
61 | }
62 |
63 | public boolean isReleaseCheck() {
64 | return releaseCheck;
65 | }
66 |
67 | public void setReleaseCheck(boolean releaseCheck) {
68 | this.releaseCheck = releaseCheck;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/pojo/Order.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.pojo;
2 |
3 | /**
4 | * Created by PetterChen on 2017/5/16.
5 | */
6 |
7 | public class Order {
8 | private int id;
9 | private int tradeId;
10 | private int authorId;
11 | private int payId;
12 | private long createTime;
13 |
14 | public int getId() {
15 | return id;
16 | }
17 |
18 | public void setId(int id) {
19 | this.id = id;
20 | }
21 |
22 | public int getTradeId() {
23 | return tradeId;
24 | }
25 |
26 | public void setTradeId(int tradeId) {
27 | this.tradeId = tradeId;
28 | }
29 |
30 | public int getAuthorId() {
31 | return authorId;
32 | }
33 |
34 | public void setAuthorId(int authorId) {
35 | this.authorId = authorId;
36 | }
37 |
38 | public int getPayId() {
39 | return payId;
40 | }
41 |
42 | public void setPayId(int payId) {
43 | this.payId = payId;
44 | }
45 |
46 | public long getCreateTime() {
47 | return createTime;
48 | }
49 |
50 | public void setCreateTime(long createTime) {
51 | this.createTime = createTime;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/pojo/TradeTag.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.pojo;
2 |
3 | import com.peter.schoolmarket.R;
4 |
5 | import java.io.Serializable;
6 | import java.util.ArrayList;
7 | import java.util.List;
8 |
9 | import io.realm.RealmObject;
10 | import io.realm.annotations.PrimaryKey;
11 |
12 | /**
13 | * Created by PetterChen on 2017/4/29.
14 | */
15 |
16 | public class TradeTag implements Serializable {
17 | private int rId;//分类的id
18 | private String name;//分类的名称
19 |
20 | public TradeTag() {
21 | }
22 |
23 | public int getRId() {
24 | return rId;
25 | }
26 |
27 | public String getName() {
28 | return name;
29 | }
30 |
31 | public void setRId(int rId) {
32 | this.rId = rId;
33 | }
34 |
35 | public void setName(String name) {
36 | this.name = name;
37 | }
38 |
39 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.pojo;
2 |
3 | import java.io.Serializable;
4 |
5 | import io.realm.RealmObject;
6 | import io.realm.annotations.PrimaryKey;
7 | import io.realm.annotations.Required;
8 |
9 | /**
10 | * Created by PetterChen on 2017/4/10.
11 | */
12 |
13 | public class User extends RealmObject implements Serializable {
14 | @PrimaryKey
15 | private int id;//U001
16 | private String username;//用户名
17 | private String password;//用户密码
18 | private String phone;//手机号
19 | private String imgUrl;//头像地址
20 |
21 | public User() {
22 | //
23 | }
24 |
25 | public void setId(int id) {
26 | this.id = id;
27 | }
28 |
29 | public void setUsername(String username) {
30 | this.username = username;
31 | }
32 |
33 | public void setPassword(String password) {
34 | this.password = password;
35 | }
36 |
37 | public void setPhone(String phone) {
38 | this.phone = phone;
39 | }
40 |
41 | public void setImgUrl(String imgUrl) {
42 | this.imgUrl = imgUrl;
43 | }
44 |
45 | public int getId() {
46 | return id;
47 | }
48 |
49 | public String getUsername() {
50 | return username;
51 | }
52 |
53 | public String getPassword() {
54 | return password;
55 | }
56 |
57 | public String getPhone() {
58 | return phone;
59 | }
60 |
61 | public String getImgUrl() {
62 | return imgUrl;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/storage/LoginInfoExecutor.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.storage;
2 |
3 | import android.content.Context;
4 |
5 | import com.peter.schoolmarket.data.pojo.User;
6 |
7 | /**
8 | * Created by PetterChen on 2017/4/20.
9 | */
10 |
11 | public class LoginInfoExecutor {
12 |
13 | public static User getUser(final Context context) {
14 | return ManageLoginInfo.getInstance().getUser(context);
15 | }
16 |
17 | public static void logIn(final Context context, User user){
18 | ManageLoginInfo.getInstance().saveUser(context, user);
19 | }
20 |
21 | public static void logOut(final Context context){
22 | ManageLoginInfo.getInstance().clear(context);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/data/storage/ManageLoginInfo.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.data.storage;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 |
6 | import com.peter.schoolmarket.data.pojo.User;
7 |
8 | import static android.content.Context.MODE_PRIVATE;
9 |
10 | /**
11 | * Created by PetterChen on 2017/4/20.
12 | */
13 |
14 | public class ManageLoginInfo {
15 |
16 | private final String SP="userInfo";
17 | private static ManageLoginInfo instance;
18 |
19 | private ManageLoginInfo(){
20 |
21 | }
22 |
23 | //获取唯一实例函数
24 | public static ManageLoginInfo getInstance() {
25 | if (instance == null) {
26 | synchronized (ManageLoginInfo.class) {
27 | if (instance == null) {
28 | instance = new ManageLoginInfo();
29 | }
30 | }
31 | }
32 | return instance;
33 | }
34 |
35 | public void saveUser(final Context context, final User user){
36 | SharedPreferences sp = context.getSharedPreferences(SP, MODE_PRIVATE);
37 | SharedPreferences.Editor editor = sp.edit();
38 | if (user.getId()!=0){
39 | editor.putInt("userId",user.getId());
40 | }
41 | if (user.getUsername()!=null){
42 | editor.putString("username",user.getUsername());
43 | }
44 | if (user.getPassword()!=null){
45 | editor.putString("password",user.getPassword());
46 | }
47 | if (user.getPhone()!=null){
48 | editor.putString("phone",user.getPhone());
49 | }
50 | if (user.getImgUrl()!=null){
51 | editor.putString("avatarUrl",user.getImgUrl());
52 | }
53 | editor.apply();
54 | }
55 |
56 | void clear(final Context context){
57 | SharedPreferences sp = context.getSharedPreferences(SP,MODE_PRIVATE);
58 | SharedPreferences.Editor editor = sp.edit();
59 | editor.clear();
60 | editor.apply();
61 | }
62 |
63 | public User getUser(final Context context){
64 | SharedPreferences sp = context.getSharedPreferences(SP, MODE_PRIVATE);
65 | final User user=new User();
66 | user.setId(sp.getInt("userId",0));
67 | user.setUsername(sp.getString("username",""));
68 | user.setPassword(sp.getString("password",""));
69 | user.setPhone(sp.getString("phone",""));
70 | user.setImgUrl(sp.getString("avatarUrl",""));
71 | if (user.getId() == 0) {
72 | return null;
73 | }
74 | return user;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/components/FindFragmentComponent.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.components;
2 |
3 | import com.peter.schoolmarket.di.modules.FindFragmentModule;
4 | import com.peter.schoolmarket.mvp.find.FindFragment;
5 | import com.peter.schoolmarket.mvp.find.IFindPresenter;
6 |
7 | import javax.inject.Singleton;
8 |
9 | import dagger.Component;
10 |
11 | /**
12 | * Created by PetterChen on 2017/4/28.
13 | */
14 |
15 | @Singleton
16 | @Component(modules = FindFragmentModule.class)
17 | public interface FindFragmentComponent {
18 | IFindPresenter provideIFindPresenter();
19 |
20 | void inject(FindFragment fragment);
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/components/LoginRegisterComponent.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.components;
2 |
3 | import com.afollestad.materialdialogs.MaterialDialog;
4 | import com.peter.schoolmarket.di.modules.LoginRegisterModule;
5 | import com.peter.schoolmarket.di.qualifiers.LoginProgress;
6 | import com.peter.schoolmarket.di.qualifiers.RegisterProgress;
7 | import com.peter.schoolmarket.mvp.login.ILoginRegisterPresenter;
8 | import com.peter.schoolmarket.mvp.login.LoginActivity;
9 |
10 | import javax.inject.Singleton;
11 |
12 | import dagger.Component;
13 |
14 | /**
15 | * Created by PetterChen on 2017/4/19.
16 | */
17 |
18 | @Singleton
19 | @Component(modules = LoginRegisterModule.class)
20 | public interface LoginRegisterComponent {
21 | //注意:下面这三个方法,返回值必须是从上面指定的依赖库LoginRegisterModule.class中取得的对象
22 | //注意:而方法名不一致也行,但是方便阅读,建议一致,因为它主要是根据返回值类型来找依赖的
23 | //★注意:下面这三个方法也可以不写,但是如果要写,就按照这个格式来
24 | //但是当Component要被别的Component依赖时,
25 | //这里就必须写这个方法,不写代表不向别的Component暴露此依赖
26 | ILoginRegisterPresenter provideILoginRegisterPresenter();
27 | @LoginProgress
28 | MaterialDialog provideLoginProgress();
29 | @RegisterProgress
30 | MaterialDialog provideRegisterProgress();
31 |
32 | //注意:下面的这个方法,表示要将以上的三个依赖注入到某个类中
33 | //这里我们把上面的三个依赖注入到Salad中
34 | void inject(LoginActivity activity);
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/components/RegisterNextComponent.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.components;
2 |
3 | import android.support.v4.media.VolumeProviderCompat;
4 |
5 | import com.afollestad.materialdialogs.MaterialDialog;
6 | import com.peter.schoolmarket.di.modules.RegisterNextModule;
7 | import com.peter.schoolmarket.mvp.login.register.next.IRegisterNextPresenter;
8 | import com.peter.schoolmarket.mvp.login.register.next.RegisterNextActivity;
9 |
10 | import javax.inject.Singleton;
11 |
12 | import dagger.Component;
13 |
14 | /**
15 | * Created by PetterChen on 2017/4/19.
16 | */
17 |
18 | @Singleton
19 | @Component(modules = RegisterNextModule.class)
20 | public interface RegisterNextComponent {
21 |
22 | IRegisterNextPresenter provideIRegisterNextPresenter();
23 | MaterialDialog provideRegisterNextProgress();
24 |
25 | void inject(RegisterNextActivity activity);
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/modules/FindFragmentModule.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.modules;
2 |
3 | import android.content.Context;
4 |
5 | import com.peter.schoolmarket.mvp.find.FindPresenter;
6 | import com.peter.schoolmarket.mvp.find.IFindPresenter;
7 | import com.peter.schoolmarket.mvp.find.IFindView;
8 |
9 | import javax.inject.Singleton;
10 |
11 | import dagger.Module;
12 | import dagger.Provides;
13 |
14 | /**
15 | * Created by PetterChen on 2017/4/28.
16 | */
17 |
18 | @Module
19 | public class FindFragmentModule {
20 |
21 | Context context;
22 | IFindView view;
23 |
24 | public FindFragmentModule(Context context, IFindView view) {
25 | this.context = context;
26 | this.view = view;
27 | }
28 |
29 | @Singleton
30 | @Provides
31 | public IFindPresenter provideIFindPresenter() {
32 | return new FindPresenter(context, view);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/modules/LoginRegisterModule.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.modules;
2 |
3 | import android.content.Context;
4 |
5 | import com.afollestad.materialdialogs.MaterialDialog;
6 | import com.peter.schoolmarket.di.qualifiers.LoginProgress;
7 | import com.peter.schoolmarket.di.qualifiers.RegisterProgress;
8 | import com.peter.schoolmarket.mvp.login.ILoginRegisterPresenter;
9 | import com.peter.schoolmarket.mvp.login.ILoginRegisterView;
10 | import com.peter.schoolmarket.mvp.login.LoginRegisterPresenter;
11 |
12 | import javax.inject.Singleton;
13 |
14 | import dagger.Module;
15 | import dagger.Provides;
16 |
17 | /**
18 | * Created by PetterChen on 2017/4/19.
19 | */
20 |
21 | @Module
22 | public class LoginRegisterModule {
23 |
24 | private ILoginRegisterView loginRegisterView;
25 | private Context context;
26 |
27 | public LoginRegisterModule(ILoginRegisterView view, Context context) {
28 | this.loginRegisterView = view;
29 | this.context = context;
30 | }
31 |
32 | @Singleton @Provides
33 | public ILoginRegisterPresenter provideILoginRegisterPresenter() {
34 | return new LoginRegisterPresenter(loginRegisterView, context);
35 | }
36 |
37 | @LoginProgress
38 | @Singleton @Provides
39 | public MaterialDialog provideLoginProgress() {
40 | return new MaterialDialog.Builder(context)
41 | .content("正在登录...")
42 | .progress(true, 0)
43 | .progressIndeterminateStyle(false)//是否水平放置
44 | .title("请稍等")
45 | .build();
46 | }
47 |
48 | @RegisterProgress
49 | @Singleton @Provides
50 | public MaterialDialog provideRegisterProgress() {
51 | return new MaterialDialog.Builder(context)
52 | .content("正在注册...")
53 | .progress(true, 0)
54 | .progressIndeterminateStyle(false)//是否水平放置
55 | .title("请稍等")
56 | .build();
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/modules/RegisterNextModule.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.modules;
2 |
3 | import android.content.Context;
4 |
5 | import com.afollestad.materialdialogs.MaterialDialog;
6 | import com.peter.schoolmarket.mvp.login.register.next.IRegisterNextPresenter;
7 | import com.peter.schoolmarket.mvp.login.register.next.IRegisterNextView;
8 | import com.peter.schoolmarket.mvp.login.register.next.RegisterNextPresenter;
9 |
10 | import javax.inject.Singleton;
11 |
12 | import dagger.Module;
13 | import dagger.Provides;
14 |
15 | /**
16 | * Created by PetterChen on 2017/4/19.
17 | */
18 |
19 | @Module
20 | public class RegisterNextModule {
21 |
22 | private Context context;
23 | private IRegisterNextView iRegisterNextView;
24 |
25 | public RegisterNextModule(Context context, IRegisterNextView iRegisterNextView) {
26 | this.context = context;
27 | this.iRegisterNextView = iRegisterNextView;
28 | }
29 |
30 | @Singleton @Provides
31 | public IRegisterNextPresenter provideIRegisterNextPresenter() {
32 | return new RegisterNextPresenter(context, iRegisterNextView);
33 | }
34 |
35 | @Singleton @Provides
36 | public MaterialDialog provideRegisterNextProgress() {
37 | return new MaterialDialog.Builder(context)
38 | .content("正在添加手机号码...")
39 | .progress(true, 0)
40 | .progressIndeterminateStyle(false)//是否水平放置
41 | .title("请稍等")
42 | .build();
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/qualifiers/LoginProgress.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.qualifiers;
2 |
3 | import javax.inject.Qualifier;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/19.
7 | */
8 |
9 | @Qualifier
10 | public @interface LoginProgress {
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/di/qualifiers/RegisterProgress.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.di.qualifiers;
2 |
3 | import javax.inject.Qualifier;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/19.
7 | */
8 |
9 | @Qualifier
10 | public @interface RegisterProgress {
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mock/UserMock.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mock;
2 |
3 | import com.google.gson.Gson;
4 | import com.google.gson.reflect.TypeToken;
5 | import com.peter.schoolmarket.data.dto.Result;
6 | import com.peter.schoolmarket.data.pojo.User;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * Created by PetterChen on 2017/5/2.
12 | */
13 |
14 | public class UserMock {
15 | public Result register(){
16 | String json="{\"code\":100,\"msg\":\"操作成功\",\"data\":\"U001\"}";
17 | return new Gson().fromJson(json, new TypeToken>() {}.getType());
18 | }
19 |
20 | public Result loginOrRegisterNext(){
21 | String json="{\"code\":100,\"msg\":\"操作成功\",\"data\":{\"id\":\"U001\",\"username\":\"admin\",\"password\":" +
22 | "\"admin\",\"phone\":\"18202429136\",\"avatarUrl\":\"http://opeuvb611.bkt.clouddn.com/sort_clothes.jpeg\"}}";//"null"表示传值为String = "null";
23 | //Gson g = new GsonBuilder().serializeNulls().create();字段为空
24 | return new Gson().fromJson(json, new TypeToken>() {}.getType());
25 | }
26 |
27 | public Result getUserInfo(){
28 | String json="{\"code\":100,\"msg\":\"操作成功\",\"data\":{\"id\":\"U002\",\"username\":" +
29 | "\"admin\",\"phone\":\"18202429136\",\"avatarUrl\":\"http://opeuvb611.bkt.clouddn.com/sort_clothes.jpeg\"}}";//"null"表示传值为String = "null";
30 | //Gson g = new GsonBuilder().serializeNulls().create();字段为空
31 | return new Gson().fromJson(json, new TypeToken>() {}.getType());
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/base/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.base;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 |
6 | /**
7 | * Created by PetterChen on 2017/4/11.
8 | */
9 |
10 | public abstract class BaseActivity extends AppCompatActivity {
11 | protected String TAG = "BaseActivity";
12 | protected abstract void initViews(Bundle savedInstanceState);
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | TAG = getClass().getSimpleName();
18 | initViews(savedInstanceState);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/base/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.base;
2 |
3 | import android.app.Activity;
4 | import android.app.Fragment;
5 | import android.content.Context;
6 | import android.os.Bundle;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 |
11 | import com.peter.schoolmarket.application.MarketApp;
12 |
13 | /**
14 | * Created by PetterChen on 2017/4/18.
15 | */
16 |
17 | public abstract class BaseFragment extends Fragment {
18 |
19 | //private Activity activity;
20 |
21 | protected abstract int getLayoutResId();
22 |
23 | protected abstract void initViews(View view, Bundle savedInstanceState);
24 |
25 |
26 | @Override
27 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
28 | View view = inflater.inflate(getLayoutResId(), container, false);
29 | initViews(view, savedInstanceState);
30 | return view;
31 | }
32 |
33 | /*public Context getContext(){
34 | if(activity == null){
35 | return MarketApp.getInstance();
36 | }
37 | return activity;
38 | }*/
39 |
40 | /*@Override
41 | public void onAttach(Activity activity) {
42 | super.onAttach(activity);
43 | activity = getActivity();
44 | }*/
45 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/find/IFindModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.find;
2 |
3 | import java.util.List;
4 |
5 | import io.realm.Realm;
6 |
7 | /**
8 | * Created by PetterChen on 2017/4/28.
9 | */
10 |
11 | public interface IFindModel {
12 | void tradesDataReq(final IGainListener listener,final int page);
13 | void searchDataReq(final IGainListener listener,final String query);
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/find/IFindPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.find;
2 |
3 | import io.realm.Realm;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/28.
7 | */
8 |
9 | public interface IFindPresenter {
10 |
11 | void initView(Realm realm);
12 |
13 | void refreshView();
14 |
15 | void loadNextPage();
16 |
17 | void loadSearchPage(String query);
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/find/IFindView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.find;
2 |
3 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/28.
7 | */
8 |
9 | public interface IFindView {
10 | void loadDataSuccess(RecyclerCommonAdapter> adapter);//当数据获取成功
11 | void hideRefresh();//隐藏下拉刷新
12 | void showProgress();
13 | void hideProgress();
14 | void showRefresh();
15 | void onSuccess(String msg);
16 | void onFail(String msg);
17 | void setSearchFlag(boolean flag);
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/find/IGainListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.find;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.Trade;
5 | import com.peter.schoolmarket.data.pojo.User;
6 |
7 | import java.util.List;
8 |
9 | import io.realm.Realm;
10 |
11 | /**
12 | * Created by PetterChen on 2017/4/28.
13 | */
14 |
15 | public interface IGainListener {
16 | void onReqComplete(Result> result);//从服务器中得到数据后的操作
17 | void onSearchReqComplete(Result> result);//从服务器中得到数据后的操作
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/ILoginRegisterPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/11.
5 | */
6 |
7 | public interface ILoginRegisterPresenter {
8 | //view和model的交互是登录和注册
9 | void login(String username,String password);
10 | void register(String username,String password);
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/ILoginRegisterView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/11.
5 | */
6 |
7 | public interface ILoginRegisterView {
8 | //界面友好交互
9 | void showLoginLoading();//登录进度框
10 | void hideLoginLoading();//隐藏登录进度框
11 | void showRegisterLoading();//注册进度框
12 | void hideRegisterLoading();//隐藏进度框
13 | //结果
14 | void loginSuccess();//登录成功
15 | void loginFailed(String msg);//登录失败
16 | void registerSuccess(String userId);//注册成功
17 | void registerFailed(String msg);//注册失败
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/IUserModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/11.
5 | */
6 |
7 | public interface IUserModel {
8 | void login(String userName, String password, OnLoginListener loginListener);
9 | void register(String userName, String password, OnRegisterListener registerListener);
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/LoginRegisterPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login;
2 |
3 | import android.content.Context;
4 |
5 | import com.peter.schoolmarket.data.dto.Result;
6 | import com.peter.schoolmarket.data.pojo.User;
7 | import com.peter.schoolmarket.data.storage.LoginInfoExecutor;
8 |
9 | /**
10 | * Created by PetterChen on 2017/4/19.
11 | * 登录注册界面的交互器,有两个操作,登录和注册
12 | *
13 | */
14 |
15 | public class LoginRegisterPresenter implements ILoginRegisterPresenter, OnLoginListener, OnRegisterListener {
16 |
17 | private IUserModel userModel;
18 | private ILoginRegisterView loginRegisterView;
19 | private Context context;
20 |
21 | public LoginRegisterPresenter(ILoginRegisterView loginRegisterView, Context context) {
22 | this.context = context;
23 | this.userModel = new UserModel();
24 | this.loginRegisterView = loginRegisterView;
25 | }
26 |
27 |
28 | //登录操作:打开加载进度框,进行登录
29 | @Override
30 | public void login(String username, String password) {
31 | loginRegisterView.showLoginLoading();
32 | userModel.login(username, password, this);
33 | }
34 |
35 | //注册操作:打开加载进度框,进行注册
36 | @Override
37 | public void register(String username, String password) {
38 | loginRegisterView.showRegisterLoading();
39 | userModel.register(username, password, this);
40 | }
41 |
42 | //登录结果:隐藏加载进度框,进行返回值判断是否登录成功或者失败
43 | @Override
44 | public void loginResult(Result result) {
45 | loginRegisterView.hideLoginLoading();
46 |
47 | switch (result.getCode()) {
48 | case 100://操作成功
49 | LoginInfoExecutor.logIn(context, result.getData());
50 | loginRegisterView.loginSuccess();
51 | break;
52 | case 99://网络异常或者系统错误
53 | case 201://用户名错误
54 | case 202://密码错误
55 | loginRegisterView.loginFailed(result.getMsg());
56 | break;
57 | default:
58 | break;
59 | }
60 | }
61 |
62 | //注册结果:隐藏加载进度框,进行返回值判断是否注册成功
63 | @Override
64 | public void registerResult(Result result) {
65 | loginRegisterView.hideRegisterLoading();
66 | switch (result.getCode()) {
67 | case 100://操作成功
68 | loginRegisterView.registerSuccess(result.getMsg());
69 | break;
70 | case 99://网络异常或者系统错误
71 | case 203://该用户名已经存在
72 | loginRegisterView.registerFailed(result.getMsg());
73 | break;
74 | default:
75 | break;
76 | }
77 | }
78 |
79 | }
80 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/OnLoginListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.User;
5 |
6 | /**
7 | * Created by PetterChen on 2017/4/11.
8 | * 登录结果监听
9 | */
10 |
11 | public interface OnLoginListener {
12 | void loginResult(Result result);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/OnRegisterListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.User;
5 |
6 | /**
7 | * Created by PetterChen on 2017/4/11.
8 | * 注册结果监听
9 | */
10 |
11 | public interface OnRegisterListener {
12 | void registerResult(Result result);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/register/next/IRegisterNextModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login.register.next;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/19.
5 | */
6 |
7 | public interface IRegisterNextModel {
8 | void addPhoneNumber(String phoneNumber, String username, String password, OnRegisterNextListener onRegisterNextListener);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/register/next/IRegisterNextPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login.register.next;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/19.
5 | */
6 |
7 | public interface IRegisterNextPresenter {
8 | void addPhoneNum(String phoneNumber, String username, String password);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/register/next/IRegisterNextView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login.register.next;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/19.
5 | */
6 |
7 | public interface IRegisterNextView {
8 | //操作需要什么
9 | String getPhoneNumber();//取得手机号码
10 | //界面友好交互
11 | void showLoading();//显示进度框
12 | void hideLoading();//隐藏进度框
13 | //结果
14 | void addSuccess();//添加成功
15 | void addFailed();//添加失败
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/register/next/OnRegisterNextListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login.register.next;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.User;
5 |
6 | /**
7 | * Created by PetterChen on 2017/4/19.
8 | */
9 |
10 | public interface OnRegisterNextListener {
11 | void registerNextResult(Result result);
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/register/next/RegisterNextModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login.register.next;
2 |
3 | import com.peter.schoolmarket.application.AppConf;
4 | import com.peter.schoolmarket.data.dto.Result;
5 | import com.peter.schoolmarket.data.pojo.User;
6 | import com.peter.schoolmarket.mock.UserMock;
7 | import com.peter.schoolmarket.network.NetReturn;
8 | import com.peter.schoolmarket.network.ReqExecutor;
9 |
10 | import rx.Subscriber;
11 | import rx.android.schedulers.AndroidSchedulers;
12 | import rx.schedulers.Schedulers;
13 |
14 | /**
15 | * Created by PetterChen on 2017/4/19.
16 | */
17 |
18 | public class RegisterNextModel implements IRegisterNextModel {
19 | @Override
20 | public void addPhoneNumber(String phoneNumber, final String username, final String password, final OnRegisterNextListener onRegisterNextListener) {
21 | /*if (AppConf.useMock){
22 | onRegisterNextListener.registerNextResult(new UserMock().loginOrRegisterNext());
23 | return;
24 | }*/
25 |
26 | final Result result=new Result().result(NetReturn.SERVER_ERROR);
27 | //此网络请求等服务器搭好再调整
28 | ReqExecutor
29 | .INSTANCE()
30 | .userReq()
31 | .registerNext(username, password, phoneNumber)
32 | .subscribeOn(Schedulers.io())//在工作线程请求网络
33 | .observeOn(AndroidSchedulers.mainThread())//在主线程处理结果
34 | .subscribe(new Subscriber>() {
35 |
36 | //此方法在onNext()方法后执行
37 | @Override
38 | public void onCompleted() {
39 | onRegisterNextListener.registerNextResult(result);
40 | }
41 |
42 | @Override
43 | public void onError(Throwable e) {
44 | onRegisterNextListener.registerNextResult(result);
45 | }
46 |
47 | //相当与onClick()
48 | @Override
49 | public void onNext(Result resultData) {
50 | result.setCode(resultData.getCode());
51 | result.setMsg(resultData.getMsg());
52 | result.setData(resultData.getData());
53 | }
54 | });
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/login/register/next/RegisterNextPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.login.register.next;
2 |
3 | import android.content.Context;
4 | import android.widget.Toast;
5 |
6 | import com.peter.schoolmarket.data.dto.Result;
7 | import com.peter.schoolmarket.data.pojo.User;
8 | import com.peter.schoolmarket.data.storage.LoginInfoExecutor;
9 |
10 | /**
11 | * Created by PetterChen on 2017/4/19.
12 | */
13 |
14 | public class RegisterNextPresenter implements IRegisterNextPresenter, OnRegisterNextListener {
15 |
16 | private IRegisterNextModel iRegisterNextModel;
17 | private Context context;
18 | private IRegisterNextView iRegisterNextView;
19 |
20 | public RegisterNextPresenter(Context context, IRegisterNextView iRegisterNextView) {
21 | iRegisterNextModel = new RegisterNextModel();
22 | this.context = context;
23 | this.iRegisterNextView = iRegisterNextView;
24 | }
25 |
26 | @Override
27 | public void addPhoneNum(String phoneNumber, String username, String password) {
28 | iRegisterNextView.showLoading();
29 | iRegisterNextModel.addPhoneNumber(phoneNumber, username, password, this);
30 | }
31 |
32 | @Override
33 | public void registerNextResult(Result result) {
34 | iRegisterNextView.hideLoading();
35 | switch (result.getCode()) {
36 | case 99://网络异常或者系统错误
37 | iRegisterNextView.addFailed();
38 | break;
39 | case 100://操作成功
40 | LoginInfoExecutor.logIn(context, result.getData());
41 | iRegisterNextView.addSuccess();
42 | break;
43 | default:
44 | break;
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/IMainListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.User;
5 |
6 | import java.util.List;
7 |
8 | import io.realm.Realm;
9 |
10 | /**
11 | * Created by PetterChen on 2017/5/16.
12 | */
13 |
14 | public interface IMainListener {
15 | void onUsersReqComplete(Result> result, Realm realm);
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/IMainModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main;
2 |
3 | import io.realm.Realm;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/16.
7 | */
8 |
9 | public interface IMainModel {
10 | void getUsers(final IMainListener listener, Realm realm);
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/IMainPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main;
2 |
3 | import android.support.v4.widget.DrawerLayout;
4 | import android.view.View;
5 |
6 | import com.miguelcatalan.materialsearchview.MaterialSearchView;
7 |
8 | import io.realm.Realm;
9 |
10 | /**
11 | * Created by PetterChen on 2017/4/20.
12 | */
13 |
14 | public interface IMainPresenter {
15 | void initMain(View header, Realm realm);//初始化
16 | void sideJump(int id);//侧边栏点击跳转
17 | void searchSubmit(String query);
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/IMainView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main;
2 |
3 | /**
4 | * Created by PetterChen on 2017/5/5.
5 | */
6 |
7 | public interface IMainView {
8 | void hideDrawer();
9 | void exit();
10 | void showSearch();
11 | void hideSearch();
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/MainModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.User;
5 | import com.peter.schoolmarket.network.NetReturn;
6 | import com.peter.schoolmarket.network.ReqExecutor;
7 |
8 | import java.util.List;
9 |
10 | import io.realm.Realm;
11 | import rx.Subscriber;
12 | import rx.android.schedulers.AndroidSchedulers;
13 | import rx.schedulers.Schedulers;
14 |
15 | /**
16 | * Created by PetterChen on 2017/5/16.
17 | */
18 |
19 | public class MainModel implements IMainModel {
20 | @Override
21 | public void getUsers(final IMainListener listener, final Realm realm) {
22 | final Result> result = new Result>().result(NetReturn.SERVER_ERROR);
23 | ReqExecutor
24 | .INSTANCE()
25 | .userReq()
26 | .getUsers()
27 | .subscribeOn(Schedulers.io())
28 | .observeOn(AndroidSchedulers.mainThread())
29 | .subscribe(new Subscriber>>() {
30 | @Override
31 | public void onCompleted() {
32 | listener.onUsersReqComplete(result, realm);
33 | }
34 |
35 | @Override
36 | public void onError(Throwable e) {
37 | listener.onUsersReqComplete(result, realm);
38 | }
39 | @Override
40 | public void onNext(Result> listResult) {
41 | result.setCode(listResult.getCode());
42 | result.setMsg(listResult.getMsg());
43 | result.setData(listResult.getData());
44 | }
45 | });
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/about/AboutActivity.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main.about;
2 |
3 | import android.os.Bundle;
4 | import android.view.View;
5 | import android.widget.LinearLayout;
6 | import android.widget.Toast;
7 |
8 | import com.afollestad.materialdialogs.MaterialDialog;
9 | import com.facebook.drawee.view.SimpleDraweeView;
10 | import com.peter.schoolmarket.R;
11 | import com.peter.schoolmarket.mvp.base.BaseActivity;
12 |
13 | /**
14 | * Created by PetterChen on 2017/5/7.
15 | */
16 |
17 | public class AboutActivity extends BaseActivity {
18 | SimpleDraweeView back;
19 | LinearLayout feedback;
20 | LinearLayout help;
21 | LinearLayout version;
22 | LinearLayout introduce;
23 |
24 | @Override
25 | protected void initViews(Bundle savedInstanceState) {
26 | setContentView(R.layout.about_activity);
27 | initVariate();
28 | manageVariate();
29 | }
30 |
31 | private void initVariate() {
32 | back = (SimpleDraweeView) findViewById(R.id.about_toolbar_back);
33 | version = (LinearLayout) findViewById(R.id.about_version);
34 | introduce = (LinearLayout) findViewById(R.id.about_introduce);
35 | help = (LinearLayout) findViewById(R.id.about_help);
36 | feedback = (LinearLayout) findViewById(R.id.about_feedback);
37 | }
38 |
39 | private void manageVariate() {
40 | back.setOnClickListener(new View.OnClickListener() {
41 | @Override
42 | public void onClick(View v) {
43 | AboutActivity.this.finish();
44 | }
45 | });
46 | version.setOnClickListener(new View.OnClickListener() {
47 | @Override
48 | public void onClick(View v) {
49 | Toast.makeText(AboutActivity.this, "版本更新", Toast.LENGTH_SHORT).show();
50 | }
51 | });
52 | introduce.setOnClickListener(new View.OnClickListener() {
53 | @Override
54 | public void onClick(View v) {
55 | Toast.makeText(AboutActivity.this, "功能介绍", Toast.LENGTH_SHORT).show();
56 | }
57 | });
58 | help.setOnClickListener(new View.OnClickListener() {
59 | @Override
60 | public void onClick(View v) {
61 | Toast.makeText(AboutActivity.this, "帮助", Toast.LENGTH_SHORT).show();
62 | }
63 | });
64 | feedback.setOnClickListener(new View.OnClickListener() {
65 | @Override
66 | public void onClick(View v) {
67 | Toast.makeText(AboutActivity.this, "反馈", Toast.LENGTH_SHORT).show();
68 | }
69 | });
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/trade/IDrawerTradeListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main.trade;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.Trade;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * Created by PetterChen on 2017/5/7.
10 | */
11 |
12 | public interface IDrawerTradeListener {
13 | void onComplete(Result> result);
14 | void confirmComplete(Result result);
15 | void cancelTradeComplete(Result result);
16 | /*void onSellingComplete(Result> result);
17 | void onBoughtComplete(Result> result);
18 | void onSoldComplete(Result> result);*/
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/trade/IDrawerTradeModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main.trade;
2 |
3 | import com.peter.schoolmarket.mvp.sort.trades.ITradeTagDetailListener;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/7.
7 | */
8 |
9 | public interface IDrawerTradeModel {
10 | void drawerTradeDataReq(final IDrawerTradeListener listener, final int typeId, final int page, int myId);
11 | void confirmReceiveTrade(final IDrawerTradeListener listener, final int myId, final int tradeId);
12 | void confirmReceiveMoney(final IDrawerTradeListener listener, final int myId, final int tradeId);
13 | void cancelOrder(final IDrawerTradeListener listener, final int tradeId);
14 | void cancelTradeReq(final IDrawerTradeListener listener, final int tradeId);
15 | /*void sellingDataReq(final IDrawerTradeListener listener, final String tagName, final int page);
16 | void boughtDataReq(final IDrawerTradeListener listener, final String tagName, final int page);
17 | void soldDataReq(final IDrawerTradeListener listener, final String tagName, final int page);*/
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/trade/IDrawerTradePresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main.trade;
2 |
3 | /**
4 | * Created by PetterChen on 2017/5/7.
5 | */
6 |
7 | public interface IDrawerTradePresenter {
8 | void init(int typeId);
9 | void refresh();
10 | void loadNextPage();
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/main/trade/IDrawerTradeView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.main.trade;
2 |
3 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/7.
7 | */
8 |
9 | public interface IDrawerTradeView {
10 | void loadDataSuccess(RecyclerCommonAdapter> adapter);//当数据获取成功
11 | void loadDataFail(String errorMsg);//当数据获取失败
12 | void showRefresh();
13 | void hideRefresh();
14 | void showProgress();
15 | void hideProgress();
16 | void onSuccess(String msg);
17 | void onFail(String msg);
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/IMoreListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.Notice;
5 |
6 | import java.util.List;
7 |
8 | import io.realm.Realm;
9 |
10 | /**
11 | * Created by PetterChen on 2017/5/5.
12 | */
13 |
14 | public interface IMoreListener {
15 | void onReqComplete(Result> result, Realm realm);//从服务器中得到数据后的操作
16 | void onSearchReqComplete(Result> result);//从服务器中得到数据后的操作
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/IMoreModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more;
2 |
3 | import io.realm.Realm;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/5.
7 | */
8 |
9 | public interface IMoreModel {
10 | void noticeDataReq(final IMoreListener listener,final int page,final Realm realm);
11 | void searchDataReq(final IMoreListener listener,final String query);
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/IMorePresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more;
2 |
3 | import io.realm.Realm;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/5.
7 | */
8 |
9 | public interface IMorePresenter {
10 | void refresh(Realm realm);
11 | void init(Realm realm);
12 | void loadNextPage();
13 | void loadSearchPage(String query);
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/IMoreView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more;
2 |
3 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/5.
7 | */
8 |
9 | public interface IMoreView {
10 | void loadDataSuccess(RecyclerCommonAdapter> adapter);//当数据获取成功
11 | void hideRefresh();//隐藏下拉刷新
12 | void showProgress();
13 | void hideProgress();
14 | void showRefresh();
15 | void onSuccess(String msg);
16 | void onFail(String msg);
17 | void setSearchFlag(boolean flag);
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/add/INoticeAddListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.add;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/7.
7 | */
8 |
9 | public interface INoticeAddListener {
10 | void addNoticeResult(Result result);//执行发布notice请求,得到请求结果
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/add/INoticeAddModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.add;
2 |
3 | import com.peter.schoolmarket.mvp.trade.add.ITradeAddListener;
4 |
5 | import okhttp3.MultipartBody;
6 | import okhttp3.RequestBody;
7 |
8 | /**
9 | * Created by PetterChen on 2017/5/7.
10 | */
11 |
12 | public interface INoticeAddModel {
13 | void addNoticeReq(RequestBody noticeJson, INoticeAddListener listener);
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/add/INoticeAddPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.add;
2 |
3 | import android.widget.EditText;
4 | import android.widget.TextView;
5 |
6 | /**
7 | * Created by PetterChen on 2017/5/7.
8 | */
9 |
10 | public interface INoticeAddPresenter {
11 | void releaseNotice(EditText title, EditText content);//调用该方法正式发布notice
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/add/INoticeAddView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.add;
2 |
3 | /**
4 | * Created by PetterChen on 2017/5/7.
5 | */
6 |
7 | public interface INoticeAddView {
8 | void noticeAddSuccess();//发布商品成功
9 |
10 | void whenFail(String errorMsg);//发生异常
11 |
12 | void showProgress();//显示进度条
13 |
14 | void hideProgress();//隐藏进度条
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/add/NoticeAddModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.add;
2 |
3 | import com.peter.schoolmarket.application.AppConf;
4 | import com.peter.schoolmarket.data.dto.Result;
5 | import com.peter.schoolmarket.mock.NoticeMock;
6 | import com.peter.schoolmarket.mvp.trade.add.ITradeAddListener;
7 | import com.peter.schoolmarket.network.NetReturn;
8 | import com.peter.schoolmarket.network.ReqExecutor;
9 |
10 | import okhttp3.RequestBody;
11 | import rx.Subscriber;
12 | import rx.android.schedulers.AndroidSchedulers;
13 | import rx.schedulers.Schedulers;
14 |
15 | /**
16 | * Created by PetterChen on 2017/5/7.
17 | */
18 |
19 | public class NoticeAddModel implements INoticeAddModel {
20 | @Override
21 | public void addNoticeReq(final RequestBody noticeJson, final INoticeAddListener listener) {
22 | /*if (AppConf.useMock){
23 | listener.addNoticeResult(new NoticeMock().getReleaseNoticeResult());
24 | return;
25 | }*/
26 |
27 | final Result result= new Result().result(NetReturn.SERVER_ERROR);
28 | ReqExecutor
29 | .INSTANCE()
30 | .noticeReq()
31 | .addNotice(noticeJson)
32 | .subscribeOn(Schedulers.io())
33 | .observeOn(AndroidSchedulers.mainThread())
34 | .subscribe(new Subscriber>() {
35 | @Override
36 | public void onCompleted() {
37 | listener.addNoticeResult(result);
38 | }
39 |
40 | @Override
41 | public void onError(Throwable e) {
42 | listener.addNoticeResult(result);
43 | }
44 |
45 | @Override
46 | public void onNext(Result resultData) {
47 | result.setCode(resultData.getCode());
48 | result.setMsg(resultData.getMsg());
49 | }
50 | });
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/add/NoticeAddPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.add;
2 |
3 | import android.content.Context;
4 | import android.widget.EditText;
5 |
6 | import com.google.gson.Gson;
7 | import com.peter.schoolmarket.data.dto.Result;
8 | import com.peter.schoolmarket.data.pojo.Notice;
9 | import com.peter.schoolmarket.data.pojo.User;
10 | import com.peter.schoolmarket.data.storage.LoginInfoExecutor;
11 | import com.peter.schoolmarket.network.NetReturn;
12 | import com.peter.schoolmarket.network.RetrofitUtils;
13 | import com.peter.schoolmarket.util.ResultInterceptor;
14 |
15 | import okhttp3.RequestBody;
16 |
17 | /**
18 | * Created by PetterChen on 2017/5/7.
19 | */
20 |
21 | class NoticeAddPresenter implements INoticeAddPresenter, INoticeAddListener {
22 | private INoticeAddView view;
23 | private INoticeAddModel model;
24 | private Context context;
25 |
26 | NoticeAddPresenter(Context context, INoticeAddView view) {
27 | this.view = view;
28 | this.context = context;
29 | model = new NoticeAddModel();
30 | }
31 |
32 | @Override
33 | public void releaseNotice(EditText title, EditText content) {
34 | Notice notice = checkForm(title, content);
35 | if (!notice.isReleaseCheck()){
36 | return;
37 | }
38 | view.showProgress();
39 | String tradeJsonStr=new Gson().toJson(notice);
40 | RequestBody tradeJson=RetrofitUtils.createPartFromString(tradeJsonStr);
41 | model.addNoticeReq(tradeJson ,this);
42 | }
43 |
44 | @Override
45 | public void addNoticeResult(Result result) {
46 | view.hideProgress();
47 | if (ResultInterceptor.instance.resultHandler(result)){
48 | view.noticeAddSuccess();
49 | }else {
50 | view.whenFail(NetReturn.SERVER_ERROR.msg());
51 | }
52 | }
53 |
54 | private Notice checkForm(EditText title, EditText content) {
55 | Notice notice = new Notice();
56 | notice.setReleaseCheck(false);
57 |
58 | String titleData = title.getText().toString().trim();
59 | if (titleData.isEmpty()) {
60 | view.whenFail("标题不可以为空");
61 | return notice;
62 | }
63 | notice.setTitle(titleData);
64 |
65 | String contentData = content.getText().toString().trim();
66 | if (contentData.isEmpty()) {
67 | view.whenFail("内容不可以为空");
68 | return notice;
69 | }
70 | notice.setContent(contentData);
71 |
72 | notice.setCreateTime(System.currentTimeMillis());//设置商品发布时间
73 |
74 | User authorOld= LoginInfoExecutor.getUser(context);
75 | if (authorOld == null || authorOld.getId() == 0 ){
76 | return notice;
77 | }
78 | notice.setAuthorId(authorOld.getId());
79 |
80 | notice.setReleaseCheck(true);
81 | return notice;
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/detail/NoticeDetailActivity.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.detail;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.view.View;
6 | import android.widget.TextView;
7 |
8 | import com.facebook.drawee.view.SimpleDraweeView;
9 | import com.peter.schoolmarket.R;
10 | import com.peter.schoolmarket.application.AppConf;
11 | import com.peter.schoolmarket.data.pojo.Notice;
12 | import com.peter.schoolmarket.data.pojo.User;
13 | import com.peter.schoolmarket.mvp.base.BaseActivity;
14 | import com.peter.schoolmarket.util.TimeUtils;
15 |
16 | import io.realm.Realm;
17 |
18 | /**
19 | * Created by PetterChen on 2017/5/6.
20 | */
21 |
22 | public class NoticeDetailActivity extends BaseActivity {
23 | private SimpleDraweeView back;
24 | private TextView title;
25 | private TextView name;
26 | private TextView time;
27 | private TextView content;
28 | private Notice notice;
29 | private Realm realm;
30 |
31 | @Override
32 | protected void initViews(Bundle savedInstanceState) {
33 | setContentView(R.layout.notice_detail_activity);
34 | initVariate();
35 | manageVariate();
36 | }
37 |
38 | private void initVariate() {
39 | Intent intent=getIntent();
40 | Bundle bundle=intent.getExtras();
41 | notice = (Notice) bundle.getSerializable("notice");
42 | back = (SimpleDraweeView) findViewById(R.id.notice_detail_toolbar_back);
43 | title = (TextView) findViewById(R.id.notice_detail_title);
44 | name = (TextView) findViewById(R.id.notice_detail_name);
45 | time = (TextView) findViewById(R.id.notice_detail_time);
46 | content = (TextView) findViewById(R.id.notice_detail_content);
47 | realm = Realm.getDefaultInstance();
48 | }
49 |
50 | private void manageVariate() {
51 | back.setOnClickListener(new View.OnClickListener() {
52 | @Override
53 | public void onClick(View v) {
54 | (NoticeDetailActivity.this).finish();
55 | }
56 | });
57 | title.setText(notice.getTitle());
58 | User user = realm.where(User.class).equalTo("id",notice.getAuthorId()).findFirst();
59 | if (user != null) {
60 | name.setText(user.getUsername());
61 | }
62 | String tem = TimeUtils.getDate(notice.getCreateTime());
63 | time.setText(tem);
64 | content.setText(notice.getContent());
65 | }
66 |
67 | @Override
68 | protected void onDestroy() {
69 | super.onDestroy();
70 | realm.close();
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/my/INoticeMyListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.my;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.Notice;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * Created by PetterChen on 2017/5/22.
10 | */
11 |
12 | public interface INoticeMyListener {
13 | void onNoticeReqComplete(Result> result);
14 | void onDeleteReqComplete(Result result);
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/my/INoticeMyModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.my;
2 |
3 | /**
4 | * Created by PetterChen on 2017/5/22.
5 | */
6 |
7 | public interface INoticeMyModel {
8 | void myNoticeReq(INoticeMyListener listener, int userId, int page);
9 | void deleteNoticeReq(INoticeMyListener listener, int noticeId);
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/my/INoticeMyPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.my;
2 |
3 | import io.realm.Realm;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/22.
7 | */
8 |
9 | public interface INoticeMyPresenter {
10 | void initMain(Realm realm);
11 | void refresh();
12 | void loadNextPage();
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/more/notice/my/INoticeMyView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.more.notice.my;
2 |
3 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/22.
7 | */
8 |
9 | public interface INoticeMyView {
10 | void loadDataSuccess(RecyclerCommonAdapter> adapter);//当数据获取成功
11 | void loadDataFail(String errorMsg);//当数据获取失败
12 | void showRefresh();
13 | void hideRefresh();
14 | void showProgress();
15 | void hideProgress();
16 | void onSuccess(String msg);
17 | void onFail(String msg);
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/msg/IMsgListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.msg;
2 |
3 | /**
4 | * Created by PetterChen on 2017/5/6.
5 | */
6 |
7 | public interface IMsgListener {
8 | void msgReqComplete(boolean flag);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/msg/IMsgModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.msg;
2 |
3 | import android.content.Context;
4 |
5 | import io.realm.Realm;
6 |
7 | /**
8 | * Created by PetterChen on 2017/5/6.
9 | */
10 |
11 | public interface IMsgModel {
12 | void msgDataReq(IMsgListener listener, Realm realm, int userId, final Context context);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/msg/IMsgPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.msg;
2 |
3 | import java.net.Socket;
4 |
5 | import io.realm.Realm;
6 |
7 | /**
8 | * Created by PetterChen on 2017/5/6.
9 | */
10 |
11 | public interface IMsgPresenter {
12 | void refresh();//刷新功能,但是好像不太需要,因为消息是实时的,断网之后重新连接还是需要的
13 | void init();//初始化消息数据
14 | void updateList();
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/msg/IMsgView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.msg;
2 |
3 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
4 |
5 | /**
6 | * Created by PetterChen on 2017/5/6.
7 | */
8 |
9 | public interface IMsgView {
10 | void showProgress();
11 | void hideProgress();
12 | void hideRefresh();
13 | void loadDataSuccess(RecyclerCommonAdapter> adapter);
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/msg/ManageMsgCount.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.msg;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 |
6 | import static android.content.Context.MODE_PRIVATE;
7 |
8 | /**
9 | * Created by PetterChen on 2017/5/17.
10 | */
11 |
12 | public class ManageMsgCount {
13 | private final String SP="msgCountInfo";
14 | private static ManageMsgCount instance;
15 |
16 | private ManageMsgCount(){
17 |
18 | }
19 |
20 | //获取唯一实例函数
21 | public static ManageMsgCount getInstance() {
22 | if (instance == null) {
23 | synchronized (ManageMsgCount.class) {
24 | if (instance == null) {
25 | instance = new ManageMsgCount();
26 | }
27 | }
28 | }
29 | return instance;
30 | }
31 |
32 | public void saveCount(final Context context, final int count) {
33 | SharedPreferences sp = context.getSharedPreferences(SP, MODE_PRIVATE);
34 | SharedPreferences.Editor editor = sp.edit();
35 | editor.putInt("count", count);
36 | editor.apply();
37 | }
38 |
39 | public void clear(final Context context){
40 | SharedPreferences sp = context.getSharedPreferences(SP,MODE_PRIVATE);
41 | SharedPreferences.Editor editor = sp.edit();
42 | editor.clear();
43 | editor.apply();
44 | }
45 |
46 | public int getCount(final Context context){
47 | SharedPreferences sp = context.getSharedPreferences(SP, MODE_PRIVATE);
48 | int count = sp.getInt("count", 0);
49 | if (count == 0) {
50 | count = 1;
51 | }
52 | return count;
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/msg/MsgService.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.msg;
2 |
3 | import android.app.Service;
4 | import android.content.Intent;
5 | import android.os.IBinder;
6 | import android.support.annotation.Nullable;
7 | import android.util.Log;
8 |
9 | import com.peter.schoolmarket.application.AppConf;
10 | import com.peter.schoolmarket.data.storage.LoginInfoExecutor;
11 |
12 | import java.util.concurrent.TimeUnit;
13 |
14 | import io.realm.Realm;
15 | import rx.Observable;
16 | import rx.Subscription;
17 | import rx.android.schedulers.AndroidSchedulers;
18 | import rx.functions.Action1;
19 | import rx.schedulers.Schedulers;
20 |
21 | /**
22 | * Created by PetterChen on 2017/5/17.
23 | */
24 |
25 | public class MsgService extends Service implements IMsgListener {
26 | public static final String ACTION = "com.peter.schoolmarket.mvp.msg.MsgService";
27 | private Realm realm;
28 | private IMsgModel model;
29 | private Subscription ms;
30 |
31 | @Nullable
32 | @Override
33 | public IBinder onBind(Intent intent) {
34 | return null;
35 | }
36 | @Override
37 | public void onCreate() {
38 | super.onCreate();
39 | realm=Realm.getDefaultInstance();
40 | model=new MsgModel();
41 | }
42 |
43 | @Override
44 | public int onStartCommand(Intent intent, int flags, int startId) {
45 | final int userId = LoginInfoExecutor.getUser(this).getId();
46 | ms = Observable.interval(1L, AppConf.Msg_Interval, TimeUnit.SECONDS)
47 | .subscribeOn(Schedulers.io())
48 | .observeOn(AndroidSchedulers.mainThread())
49 | .subscribe(new Action1() {
50 | @Override
51 | public void call(Long aLong) {
52 | model.msgDataReq(MsgService.this, realm, userId, MsgService.this);
53 | }
54 | });
55 | return START_NOT_STICKY;//如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。
56 | }
57 | @Override
58 | public void onDestroy() {
59 | super.onDestroy();
60 | ms.unsubscribe();
61 | realm.close();
62 | }
63 |
64 | @Override
65 | public void msgReqComplete(boolean flag) {
66 | /*if (flag) {
67 | Log.d("getMsgsmsgs", "Service发送广播");
68 | Intent intent = new Intent(MsgFragment.MY_BROADCAST_ACTION);
69 | sendBroadcast(intent);
70 | }*/
71 | Intent intent = new Intent(MsgFragment.MY_BROADCAST_ACTION);
72 | sendBroadcast(intent);
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/msg/detail/MsgDetailActivity.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.msg.detail;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.view.View;
6 | import android.widget.TextView;
7 |
8 | import com.facebook.drawee.view.SimpleDraweeView;
9 | import com.peter.schoolmarket.R;
10 | import com.peter.schoolmarket.data.pojo.Msg;
11 | import com.peter.schoolmarket.mvp.base.BaseActivity;
12 | import com.peter.schoolmarket.util.TimeUtils;
13 |
14 | /**
15 | * Created by PetterChen on 2017/5/17.
16 | */
17 |
18 | public class MsgDetailActivity extends BaseActivity {
19 | private SimpleDraweeView back;
20 | private TextView title;
21 | private TextView time;
22 | private TextView content;
23 | private Msg msg;
24 |
25 | @Override
26 | protected void initViews(Bundle savedInstanceState) {
27 | setContentView(R.layout.msg_detail_activity);
28 | initVariate();
29 | manageVariate();
30 | }
31 |
32 | private void initVariate() {
33 | Intent intent=getIntent();
34 | Bundle bundle=intent.getExtras();
35 | msg = (Msg) bundle.getSerializable("msg");
36 | back = (SimpleDraweeView) findViewById(R.id.msg_detail_toolbar_back);
37 | title = (TextView) findViewById(R.id.msg_detail_title);
38 | time = (TextView) findViewById(R.id.msg_detail_time);
39 | content = (TextView) findViewById(R.id.msg_detail_content);
40 | }
41 |
42 | private void manageVariate() {
43 | back.setOnClickListener(new View.OnClickListener() {
44 | @Override
45 | public void onClick(View v) {
46 | (MsgDetailActivity.this).finish();
47 | }
48 | });
49 | title.setText(msg.getTitle());
50 | String tem = TimeUtils.getDate(msg.getCreateTime());
51 | time.setText(tem);
52 | content.setText(msg.getContent());
53 | }
54 |
55 | @Override
56 | protected void onDestroy() {
57 | super.onDestroy();
58 | }
59 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/ITradeSortPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort;
2 |
3 | import io.realm.Realm;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/29.
7 | */
8 |
9 | public interface ITradeSortPresenter {
10 | void initView();
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/ITradeSortView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort;
2 |
3 | import android.widget.AdapterView;
4 | import android.widget.BaseAdapter;
5 |
6 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
7 |
8 | /**
9 | * Created by PetterChen on 2017/4/29.
10 | */
11 |
12 | public interface ITradeSortView {
13 |
14 | //void jumpTradeDetail(String TagName);
15 |
16 | void loadTradeTagData(RecyclerCommonAdapter> adapter);
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/TradeSortFragment.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.design.widget.FloatingActionButton;
6 | import android.support.v7.widget.DefaultItemAnimator;
7 | import android.support.v7.widget.GridLayoutManager;
8 | import android.support.v7.widget.RecyclerView;
9 | import android.view.View;
10 |
11 | import com.peter.schoolmarket.R;
12 | import com.peter.schoolmarket.adapter.recycler.DividerItemGridDecoration;
13 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
14 | import com.peter.schoolmarket.mvp.base.BaseFragment;
15 | import com.peter.schoolmarket.mvp.trade.add.TradeAddActivity;
16 |
17 | /**
18 | * Created by PetterChen on 2017/4/29.
19 | */
20 |
21 | public class TradeSortFragment extends BaseFragment implements ITradeSortView {
22 |
23 | private ITradeSortPresenter presenter;
24 |
25 | private RecyclerView recyclerView;
26 | private FloatingActionButton tradeAdd;
27 |
28 | @Override
29 | protected int getLayoutResId() {
30 | return R.layout.sort_fragment;
31 | }
32 |
33 | @Override
34 | protected void initViews(View view, Bundle savedInstanceState) {
35 | recyclerView = (RecyclerView) view.findViewById(R.id.sort_grid);
36 | tradeAdd = (FloatingActionButton) view.findViewById(R.id.sort_deal_plus);
37 | presenter = new TredeSortPresenter(getActivity(), this);
38 |
39 | tradeAdd.setOnClickListener(new View.OnClickListener() {
40 | @Override
41 | public void onClick(View v) {
42 | //跳转到添加商品界面
43 | Intent intent = new Intent(getActivity(), TradeAddActivity.class);
44 | getActivity().startActivity(intent);
45 | }
46 | });
47 |
48 | recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),3));
49 | recyclerView.setItemAnimator(new DefaultItemAnimator());
50 | recyclerView.addItemDecoration(new DividerItemGridDecoration(getActivity()));
51 |
52 | presenter.initView();
53 | }
54 |
55 | @Override
56 | public void loadTradeTagData(RecyclerCommonAdapter> adapter) {
57 | recyclerView.setAdapter(adapter);
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/TredeSortPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.net.Uri;
6 | import android.view.View;
7 | import android.widget.Toast;
8 |
9 | import com.peter.schoolmarket.R;
10 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
11 | import com.peter.schoolmarket.adapter.recycler.RecyclerViewHolder;
12 | import com.peter.schoolmarket.data.pojo.TradeTag;
13 | import com.peter.schoolmarket.mvp.sort.trades.TradeTagDetailActivity;
14 | import com.peter.schoolmarket.util.TradeTagUtils;
15 |
16 | import java.util.ArrayList;
17 | import java.util.List;
18 |
19 | /**
20 | * Created by PetterChen on 2017/4/29.
21 | */
22 |
23 | public class TredeSortPresenter implements ITradeSortPresenter {
24 | private static int TAG_NUM = 5;
25 | private List tagList;
26 |
27 | private ITradeSortView view;
28 | private Context context;
29 |
30 | public TredeSortPresenter(Context context,ITradeSortView view) {
31 | this.context = context;
32 | this.view = view;
33 | }
34 |
35 |
36 | @Override
37 | public void initView() {
38 | initData();
39 | initList(tagList);
40 | }
41 |
42 | private void initData() {
43 | tagList = TradeTagUtils.getTradeTag();
44 | }
45 |
46 | public void initList(final List tags) {
47 | RecyclerCommonAdapter> adapter=new RecyclerCommonAdapter(context,tags, R.layout.sort_item) {
48 | @Override
49 | public void convert(RecyclerViewHolder holder, TradeTag item) {
50 | holder.setText(R.id.grid_tv,item.getName());
51 | holder.setFrescoImg(R.id.grid_iv, Uri.parse("res://drawable/" + item.getRId()));
52 | }
53 | };
54 | view.loadTradeTagData(adapter);
55 | adapter.setClickListener(new RecyclerCommonAdapter.OnItemClickListener() {
56 | @Override
57 | public void onItemClick(View view, int position) {
58 | TradeTag item=tags.get(position);
59 | String tagName = item.getName();
60 | //跳转到分类商品详情页面
61 | //Toast.makeText(context, "jump to " + tagName, Toast.LENGTH_SHORT).show();
62 | Intent intent=new Intent(context,TradeTagDetailActivity.class);
63 | intent.putExtra("tagName", tagName);
64 | context.startActivity(intent);
65 | }
66 | });
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/trades/ITradeTagDetailListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort.trades;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.Trade;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * Created by PetterChen on 2017/4/29.
10 | */
11 |
12 | public interface ITradeTagDetailListener {
13 | void onComplete(Result> result);
14 | void onSearchReqComplete(Result> result);//从服务器中得到数据后的操作
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/trades/ITradeTagDetailModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort.trades;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/29.
5 | */
6 |
7 | public interface ITradeTagDetailModel {
8 | void tradesDataReq(final ITradeTagDetailListener listener, final String tagName, final int page);
9 | void searchDataReq(final ITradeTagDetailListener listener, final String query, final String tagName);
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/trades/ITradeTagDetailPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort.trades;
2 |
3 | import com.miguelcatalan.materialsearchview.MaterialSearchView;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/29.
7 | */
8 |
9 | public interface ITradeTagDetailPresenter {
10 | void init(String tagName);
11 | void refresh();
12 | void loadNextPage();
13 | void loadSearchPage(String query);
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/sort/trades/ITradeTagDetailView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.sort.trades;
2 |
3 | import com.peter.schoolmarket.adapter.recycler.RecyclerCommonAdapter;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/29.
7 | */
8 |
9 | public interface ITradeTagDetailView {
10 | void loadDataSuccess(RecyclerCommonAdapter> adapter);//当数据获取成功
11 |
12 | void loadDataFail(String errorMsg);//当数据获取失败
13 |
14 | void hideRefresh();
15 | void showProgress();
16 | void hideProgress();
17 |
18 | void showRefresh();
19 | void onSuccess(String msg);
20 | void onFail(String msg);
21 | void setSearchFlag(boolean flag);
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/splash/SplashActivity.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.splash;
2 |
3 | import android.content.Intent;
4 | import android.net.Uri;
5 | import android.os.Bundle;
6 | import android.os.Handler;
7 | import android.util.Log;
8 | import android.view.WindowManager;
9 |
10 | import com.facebook.drawee.backends.pipeline.Fresco;
11 | import com.facebook.drawee.interfaces.DraweeController;
12 | import com.facebook.drawee.view.SimpleDraweeView;
13 | import com.peter.schoolmarket.R;
14 | import com.peter.schoolmarket.data.dto.Result;
15 | import com.peter.schoolmarket.data.pojo.User;
16 | import com.peter.schoolmarket.data.storage.LoginInfoExecutor;
17 | import com.peter.schoolmarket.mock.UserMock;
18 | import com.peter.schoolmarket.mvp.base.BaseActivity;
19 | import com.peter.schoolmarket.mvp.login.LoginActivity;
20 | import com.peter.schoolmarket.mvp.main.MainActivity;
21 |
22 | /**
23 | * Created by PetterChen on 2017/4/11.
24 | */
25 |
26 | public class SplashActivity extends BaseActivity {
27 |
28 | SimpleDraweeView view;
29 |
30 | @Override
31 | protected void initViews(Bundle savedInstanceState) {
32 | //设置窗体全屏
33 | getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
34 | WindowManager.LayoutParams.FLAG_FULLSCREEN);
35 | setContentView(R.layout.splash_activity);
36 | splashAction();
37 | initVariate();
38 | }
39 |
40 | private void initVariate() {
41 | view = (SimpleDraweeView) findViewById(R.id.loading_gif);
42 | DraweeController builder = Fresco.newDraweeControllerBuilder()
43 | .setAutoPlayAnimations(true)
44 | .setUri(Uri.parse("res://drawable/" + R.drawable.phone_splash))
45 | .build();
46 | view.setController(builder);
47 | }
48 |
49 | private void manageVariate() {
50 |
51 | }
52 |
53 | private void splashAction() {
54 | //判断是否登录,登录则跳转主界面,否则到注册登录界面
55 | User user= LoginInfoExecutor.getUser(SplashActivity.this);
56 | if(user == null){
57 | //跳转到注册登录界面
58 | new Handler().postDelayed(new Runnable() {
59 | @Override
60 | public void run() {
61 | Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
62 | startActivity(intent);
63 | finish();
64 | }
65 | }, 2500);
66 | }else {
67 | //跳转到主界面
68 | new Handler().postDelayed(new Runnable() {
69 | @Override
70 | public void run() {
71 | Intent intent = new Intent(SplashActivity.this,MainActivity.class);
72 | startActivity(intent);
73 | finish();
74 | }
75 | }, 2500);
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/test/TestActivity.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.test;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.annotation.VisibleForTesting;
6 | import android.support.v7.widget.Toolbar;
7 | import android.view.View;
8 | import android.view.Window;
9 | import android.widget.ImageView;
10 | import android.widget.TextView;
11 |
12 | import com.facebook.drawee.view.SimpleDraweeView;
13 | import com.peter.schoolmarket.R;
14 | import com.peter.schoolmarket.data.pojo.Trade;
15 | import com.peter.schoolmarket.mvp.base.BaseActivity;
16 | import com.peter.schoolmarket.util.TimeUtils;
17 |
18 | /**
19 | * Created by PetterChen on 2017/5/2.
20 | */
21 |
22 | public class TestActivity extends BaseActivity {
23 | TextView text;
24 | TextView title;
25 | SimpleDraweeView back;
26 | @Override
27 | protected void initViews(Bundle savedInstanceState) {
28 | setContentView(R.layout.test_activity);
29 |
30 | //设置标题栏
31 | //toolbar = (Toolbar) findViewById(R.id.test_toolbar);
32 | //toolbar.setTitle(this.getResources().getString(R.string.main_title));
33 | //setSupportActionBar(toolbar);
34 |
35 | text = (TextView) findViewById(R.id.test_text);
36 | title = (TextView) findViewById(R.id.test_toolbar_title);
37 | back = (SimpleDraweeView) findViewById(R.id.test_toolbar_back);
38 | Intent intent=getIntent();
39 | text.setText(intent.getStringExtra("textString"));
40 | /*String tem = TimeUtils.getDateAndTime(System.currentTimeMillis()) + "||"
41 | + TimeUtils.getDate(System.currentTimeMillis()) + "||"
42 | + TimeUtils.getTime(System.currentTimeMillis());
43 | text.setText(tem);*/
44 | back.setOnClickListener(new View.OnClickListener() {
45 | @Override
46 | public void onClick(View v) {
47 | (TestActivity.this).finish();
48 | }
49 | });
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/add/ITradeAddListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.add;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/30.
7 | */
8 |
9 | public interface ITradeAddListener {
10 | void addTradeResult(Result result);//执行发布商品请求,得到请求结果
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/add/ITradeAddModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.add;
2 |
3 | import java.util.List;
4 |
5 | import okhttp3.MultipartBody;
6 | import okhttp3.RequestBody;
7 |
8 | /**
9 | * Created by PetterChen on 2017/4/30.
10 | */
11 |
12 | public interface ITradeAddModel {
13 | void addTradeReq(final RequestBody tradeBody, final RequestBody photoBody,
14 | ITradeAddListener listener);
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/add/ITradeAddPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.add;
2 |
3 | import android.widget.EditText;
4 | import android.widget.TextView;
5 |
6 | import java.util.LinkedList;
7 |
8 | /**
9 | * Created by PetterChen on 2017/4/30.
10 | */
11 |
12 | public interface ITradeAddPresenter {
13 | void releaseTrade(String picUrls, EditText titleContent, EditText nowPrice,
14 | EditText originalPrice, EditText descContent, TextView tag);//调用该方法正式发布商品
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/add/ITradeAddView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.add;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/30.
7 | */
8 |
9 | public interface ITradeAddView {
10 | void tradeAddSuccess();//发布商品成功
11 |
12 | void whenFail(String errorMsg);//发生异常
13 |
14 | void showProgress();//显示进度条
15 |
16 | void hideProgress();//隐藏进度条
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/add/TradeAddModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.add;
2 |
3 | import com.peter.schoolmarket.application.AppConf;
4 | import com.peter.schoolmarket.data.dto.Result;
5 | import com.peter.schoolmarket.mock.TradeMock;
6 | import com.peter.schoolmarket.network.NetReturn;
7 | import com.peter.schoolmarket.network.ReqExecutor;
8 |
9 | import okhttp3.MultipartBody;
10 | import okhttp3.RequestBody;
11 | import rx.Subscriber;
12 | import rx.android.schedulers.AndroidSchedulers;
13 | import rx.schedulers.Schedulers;
14 |
15 | /**
16 | * Created by PetterChen on 2017/4/30.
17 | */
18 |
19 | public class TradeAddModel implements ITradeAddModel {
20 | @Override
21 | public void addTradeReq(final RequestBody tradeBody, final RequestBody photoBody, final ITradeAddListener listener) {
22 | /*if (AppConf.useMock){
23 | listener.addTradeResult(new TradeMock().getReleaseTradeResult());
24 | return;
25 | }*/
26 |
27 | final Result result= new Result().result(NetReturn.SERVER_ERROR);
28 | ReqExecutor
29 | .INSTANCE()
30 | .tradeReq()
31 | .addTrade(tradeBody,photoBody)
32 | .subscribeOn(Schedulers.io())
33 | .observeOn(AndroidSchedulers.mainThread())
34 | .subscribe(new Subscriber>() {
35 | @Override
36 | public void onCompleted() {
37 | listener.addTradeResult(result);
38 | }
39 |
40 | @Override
41 | public void onError(Throwable e) {
42 | result.setCode(NetReturn.SERVER_ERROR.code());
43 | listener.addTradeResult(result);
44 | }
45 |
46 | @Override
47 | public void onNext(Result resultData) {
48 | result.setCode(resultData.getCode());
49 | result.setMsg(resultData.getMsg());
50 | }
51 | });
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/detail/ITradeDetailListener.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.detail;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/30.
7 | */
8 |
9 | public interface ITradeDetailListener {
10 | void placeOrderComplete(Result result);
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/detail/ITradeDetailModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.detail;
2 |
3 | import com.peter.schoolmarket.data.pojo.Trade;
4 | import com.peter.schoolmarket.data.pojo.User;
5 |
6 | /**
7 | * Created by PetterChen on 2017/4/30.
8 | */
9 |
10 | public interface ITradeDetailModel {
11 | void placeOrderReq(ITradeDetailListener listener, User user, int tradeId);
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/detail/ITradeDetailPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.detail;
2 |
3 | import com.peter.schoolmarket.data.pojo.Trade;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/30.
7 | */
8 |
9 | public interface ITradeDetailPresenter {
10 | void loadTradeData(final Trade trade);
11 | void placeOrder(int tradeId);
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/detail/ITradeDetailView.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.detail;
2 |
3 | import com.peter.schoolmarket.data.pojo.Trade;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/30.
7 | */
8 |
9 | public interface ITradeDetailView {
10 | void showPlaceOrderReqSuc(String msg);
11 | void showPlaceOrderReqFail();
12 | void loadTradeSuccess(final Trade trade);
13 | void showProgress();
14 | void hideProgress();
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/detail/TradeDetailModel.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.detail;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.User;
5 | import com.peter.schoolmarket.network.NetReturn;
6 | import com.peter.schoolmarket.network.ReqExecutor;
7 |
8 | import rx.Subscriber;
9 | import rx.android.schedulers.AndroidSchedulers;
10 | import rx.schedulers.Schedulers;
11 |
12 | /**
13 | * Created by PetterChen on 2017/4/30.
14 | */
15 |
16 | public class TradeDetailModel implements ITradeDetailModel {
17 | @Override
18 | public void placeOrderReq(final ITradeDetailListener listener, User user, int tradeId) {
19 | /*if (AppConf.useMock){
20 | return;
21 | }*/
22 |
23 | final Result result =new Result().result(NetReturn.SERVER_ERROR);
24 | ReqExecutor
25 | .INSTANCE()
26 | .tradeReq()
27 | .placeOrder(user.getId(),tradeId)
28 | .subscribeOn(Schedulers.io())
29 | .observeOn(AndroidSchedulers.mainThread())
30 | .subscribe(new Subscriber>() {
31 | @Override
32 | public void onCompleted() {
33 | listener.placeOrderComplete(result);
34 | }
35 |
36 | @Override
37 | public void onError(Throwable e) {
38 | listener.placeOrderComplete(result);
39 | }
40 | @Override
41 | public void onNext(Result tradeResult) {
42 | result.setCode(tradeResult.getCode());
43 | result.setMsg(tradeResult.getMsg());
44 | result.setData(tradeResult.getData());
45 | }
46 | });
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/mvp/trade/detail/TradeDetailPresenter.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.mvp.trade.detail;
2 |
3 | import android.content.Context;
4 |
5 | import com.peter.schoolmarket.data.dto.Result;
6 | import com.peter.schoolmarket.data.pojo.Trade;
7 | import com.peter.schoolmarket.data.pojo.User;
8 | import com.peter.schoolmarket.data.storage.LoginInfoExecutor;
9 | import com.peter.schoolmarket.mvp.sort.trades.ITradeTagDetailListener;
10 | import com.peter.schoolmarket.util.ResultInterceptor;
11 |
12 | import java.util.List;
13 |
14 | /**
15 | * Created by PetterChen on 2017/4/30.
16 | */
17 |
18 | public class TradeDetailPresenter implements ITradeDetailPresenter, ITradeDetailListener {
19 |
20 | private Context context;
21 | private ITradeDetailView view;
22 | private ITradeDetailModel model;
23 |
24 | public TradeDetailPresenter(Context context, ITradeDetailView view) {
25 | this.context = context;
26 | this.view = view;
27 | this.model=new TradeDetailModel();
28 | }
29 |
30 | @Override
31 | public void loadTradeData(Trade trade) {
32 | //本来需要显示加载窗口的,但是由于数据不是从服务器来的
33 | view.loadTradeSuccess(trade);
34 | }
35 |
36 | @Override
37 | public void placeOrder(int tradeId) {
38 | view.showProgress();
39 | User user= LoginInfoExecutor.getUser(context);
40 | model.placeOrderReq(this, user, tradeId);
41 | }
42 |
43 | @Override
44 | public void placeOrderComplete(Result result) {
45 | view.hideProgress();
46 | if (ResultInterceptor.instance.resultHandler(result)){
47 | view.showPlaceOrderReqSuc(result.getData());
48 | }else {
49 | view.showPlaceOrderReqFail();
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/network/NetReturn.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.network;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/13.
5 | */
6 |
7 | public enum NetReturn {
8 | //普通操作相关
9 | SERVER_ERROR(99,"网络异常或者系统错误"),
10 | SUCCESS(100,"操作成功"),
11 |
12 | //用户相关
13 | USER_NOT_EXIST(201,"用户名错误"),
14 | USER_PASS_ERR(202,"密码错误"),
15 | USER_NAME_EXIST(203,"该用户名已经存在"),
16 | USER_PHONE_EXIST(204,"该手机号已经被注册"),
17 | USER_OLD_PASS_ERR(205,"原密码错误"),
18 | USER_MSG_LATEST(206,"消息数据已经最新");
19 |
20 | //图片相关
21 | private int code;
22 | private String msg;
23 |
24 | NetReturn(int code, String msg) {
25 | this.code = code;
26 | this.msg = msg;
27 | }
28 |
29 | public int code() {
30 | return this.code;
31 | }
32 |
33 | public String msg() {
34 | return this.msg;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/network/NoticeReq.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.network;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.Notice;
5 |
6 | import java.util.List;
7 |
8 | import okhttp3.MultipartBody;
9 | import okhttp3.RequestBody;
10 | import retrofit2.http.Field;
11 | import retrofit2.http.FormUrlEncoded;
12 | import retrofit2.http.GET;
13 | import retrofit2.http.Multipart;
14 | import retrofit2.http.POST;
15 | import retrofit2.http.Part;
16 | import retrofit2.http.Query;
17 | import rx.Observable;
18 |
19 | /**
20 | * Created by PetterChen on 2017/5/5.
21 | */
22 |
23 | public interface NoticeReq {
24 | /**
25 | * 获取列表
26 | */
27 | @GET(RetrofitConf.get_notices_data)
28 | Observable>> getNoticesData(
29 | @Query("page") int page,
30 | @Query("size") int size
31 | );
32 |
33 | /**
34 | * 发布
35 | */
36 | @Multipart
37 | @POST(RetrofitConf.create_notice)
38 | Observable> addNotice(
39 | @Part("notice") RequestBody notice);
40 |
41 | /**
42 | *
43 | */
44 | @POST(RetrofitConf.get_my_notices)
45 | @FormUrlEncoded
46 | Observable>> getMyNotices(
47 | @Field("userId") int userId,
48 | @Field("page") int page,
49 | @Field("size") int size
50 | );
51 |
52 | /**
53 | *
54 | */
55 | @POST(RetrofitConf.delete_notice)
56 | @FormUrlEncoded
57 | Observable> deleteNotice(
58 | @Field("noticeId") int noticeId
59 | );
60 |
61 | @POST(RetrofitConf.get_search_notices)
62 | @FormUrlEncoded
63 | Observable>> getSearchNotices(
64 | @Field("query") String query
65 | );
66 | }
67 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/network/ReqExecutor.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.network;
2 |
3 | import com.peter.schoolmarket.BuildConfig;
4 | import com.peter.schoolmarket.application.AppConf;
5 |
6 | import java.util.concurrent.TimeUnit;
7 |
8 | import okhttp3.OkHttpClient;
9 |
10 | import okhttp3.logging.HttpLoggingInterceptor;
11 | import retrofit2.Converter;
12 | import retrofit2.Retrofit;
13 | import retrofit2.converter.gson.GsonConverterFactory;
14 | import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
15 |
16 | import static com.peter.schoolmarket.network.RetrofitConf.DEFAULT_TIMEOUT;
17 |
18 | /**
19 | * Created by PetterChen on 2017/4/18.
20 | */
21 |
22 | public class ReqExecutor {
23 | private UserReq userReq;
24 | private TradeReq tradeReq;
25 | private NoticeReq noticeReq;
26 |
27 |
28 | private ReqExecutor(){}
29 |
30 | private static class ReqExecutorBuilder {
31 | private static ReqExecutor instance = new ReqExecutor();
32 | }
33 |
34 | public static ReqExecutor INSTANCE() {
35 | return ReqExecutorBuilder.instance;
36 | }
37 |
38 | private Retrofit getRetrofit(Converter.Factory factory){
39 |
40 | OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
41 |
42 | if (BuildConfig.DEBUG) {//打印http日志
43 | HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
44 | loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
45 | httpClientBuilder.addInterceptor(loggingInterceptor);
46 | }
47 |
48 | httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
49 |
50 | return new Retrofit.Builder()
51 | .client(httpClientBuilder.build())
52 | .addConverterFactory(factory)
53 | .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
54 | .baseUrl(AppConf.BASE_URL)
55 | .build();
56 | }
57 |
58 | private Retrofit getGsonRetrofit(){
59 | return getRetrofit(GsonConverterFactory.create());
60 | }
61 |
62 | public UserReq userReq(){
63 | if (userReq==null){
64 | userReq=getGsonRetrofit().create(UserReq.class);
65 | }
66 | return userReq;
67 | }
68 |
69 | public TradeReq tradeReq() {
70 | if (tradeReq==null){
71 | tradeReq=getGsonRetrofit().create(TradeReq.class);
72 | }
73 | return tradeReq;
74 | }
75 |
76 | public NoticeReq noticeReq() {
77 | if (noticeReq==null){
78 | noticeReq=getGsonRetrofit().create(NoticeReq.class);
79 | }
80 | return noticeReq;
81 | }
82 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/network/RetrofitConf.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.network;
2 |
3 | /**
4 | * Created by PetterChen on 2017/4/13.
5 | */
6 |
7 | public interface RetrofitConf {
8 | int DEFAULT_TIMEOUT = 5;
9 |
10 | //-----------------------------显示图片------------------------
11 | String base_img = "SchoolMarketServer/images/";
12 |
13 | //-----------------------------用户相关---------------------------
14 | String login="SchoolMarketServer/Login";//用户登录+
15 | String register="SchoolMarketServer/Register";//用户注册+
16 | String register_next="SchoolMarketServer/RegisterNext";//用户注册下一步,设置学校,手机号+
17 | String get_users="SchoolMarketServer/GetUsers";
18 | String get_msgs = "SchoolMarketServer/GetMsgs";
19 |
20 | //----------------------------notice----------------------------
21 | String get_notices_data = "SchoolMarketServer/GetNotices";//获取notice 数据
22 | String create_notice = "SchoolMarketServer/AddNotice"; //添加notice
23 | String get_my_notices = "SchoolMarketServer/GetMyNotices";
24 | String delete_notice = "SchoolMarketServer/DeleteNotice";
25 | String get_search_notices = "SchoolMarketServer/GetSearchNotices";//取得搜索数据
26 |
27 |
28 | //----------------------------商品相关----------------------------
29 | String create_trade="SchoolMarketServer/AddTrade";//发布商品
30 | String get_trades="SchoolMarketServer/GetTrades";//获取该学校的商品列表
31 | String get_tag_trades="SchoolMarketServer/GetTagTrades";//获取该分类下所有商品列表
32 | String get_drawer_trades = "SchoolMarketServer/GetDrawerTrades";
33 | String place_order = "SchoolMarketServer/PlaceOrder";//下单
34 | String confirm_trade = "SchoolMarketServer/ConfirmTrade";//确认收货
35 | String confirm_money = "SchoolMarketServer/ConfirmMoney";//确认收款
36 | String cancel_order = "SchoolMarketServer/CancelOrder";//取消订单
37 | String cancel_trade = "SchoolMarketServer/CancelTrade";//商品下架
38 | String get_search_trades = "SchoolMarketServer/GetSearchTrades";//取得搜索数据
39 | String get_tag_search_trades = "SchoolMarketServer/GetTagSearchTrades";
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/network/UserReq.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.network;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 | import com.peter.schoolmarket.data.pojo.Msg;
5 | import com.peter.schoolmarket.data.pojo.Order;
6 | import com.peter.schoolmarket.data.pojo.User;
7 |
8 | import java.util.List;
9 |
10 | import retrofit2.http.Field;
11 | import retrofit2.http.FormUrlEncoded;
12 | import retrofit2.http.GET;
13 | import retrofit2.http.POST;
14 | import retrofit2.http.Path;
15 | import retrofit2.http.Query;
16 | import rx.Observable;
17 |
18 |
19 | /**
20 | * Created by PetterChen on 2017/4/13.
21 | */
22 |
23 | public interface UserReq {
24 | /**
25 | * 用户登录并获取用户信息
26 | */
27 | @POST(RetrofitConf.login)
28 | @FormUrlEncoded
29 | Observable> login(
30 | @Field("username") String username,
31 | @Field("password") String password);
32 |
33 | /**
34 | * 用户注册请求
35 | */
36 | @POST(RetrofitConf.register)
37 | @FormUrlEncoded
38 | Observable> register(
39 | @Field("username") String username,
40 | @Field("password") String password);
41 |
42 | /**
43 | * 注册下一步,设置手机号
44 | */
45 | @POST(RetrofitConf.register_next)
46 | @FormUrlEncoded
47 | Observable> registerNext(
48 | @Field("username") String username,
49 | @Field("password") String password,
50 | @Field("phone") String phone);
51 |
52 | @GET(RetrofitConf.get_users)
53 | Observable>> getUsers();
54 |
55 | @POST(RetrofitConf.get_msgs)
56 | @FormUrlEncoded
57 | Observable>> getMsgs(
58 | @Field("userId") int userId);
59 |
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/util/BroadUtils.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.util;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.net.ConnectivityManager;
7 | import android.net.NetworkInfo;
8 | import android.widget.Toast;
9 |
10 | /**
11 | * Created by PetterChen on 2017/4/13.
12 | */
13 |
14 | public class BroadUtils extends BroadcastReceiver {
15 | @Override
16 | public void onReceive(Context context, Intent intent) {
17 | String action = intent.getAction();
18 | //表明发送端就是发送的是CONNECTIVITY_ACTION这个动作
19 | if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
20 | if (isNetConnected(context)) {
21 | //Toast.makeText(context, "连接上网络了", Toast.LENGTH_SHORT).show();
22 | } else {
23 | Toast.makeText(context, "无网络连接", Toast.LENGTH_SHORT).show();
24 | }
25 |
26 |
27 | }
28 | }
29 | public static boolean isNetConnected(Context context) {
30 | ConnectivityManager connectivityManager
31 | = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
32 | NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
33 |
34 | if (networkInfo == null) {
35 | return false;
36 | } else {
37 | return networkInfo.isAvailable() & networkInfo.isConnected();
38 | }
39 | }
40 | public static boolean isPhoneNetConnected(Context context) {
41 | int typeMobile = ConnectivityManager.TYPE_MOBILE;//手机网络类型
42 | return isNetworkConnected(context, typeMobile);
43 | }
44 | public static boolean isWifiNetConnected(Context context) {
45 | int typeMobile = ConnectivityManager.TYPE_WIFI;//WIFI网络类型
46 | return isNetworkConnected(context, typeMobile);
47 | }
48 | private static boolean isNetworkConnected(Context context, int typeMobile) {
49 | if (!isNetConnected(context)) {
50 | return false;
51 | }
52 | ConnectivityManager connectManger = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
53 | NetworkInfo networkInfo = connectManger.getNetworkInfo(typeMobile);
54 | if (networkInfo == null) {
55 | return false;
56 | } else {
57 | return true;
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/util/MsgUtil.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.util;
2 |
3 | import com.peter.schoolmarket.data.pojo.Msg;
4 |
5 | import java.util.ArrayList;
6 | import java.util.List;
7 |
8 | /**
9 | * Created by PetterChen on 2017/5/17.
10 | */
11 |
12 | public class MsgUtil {
13 |
14 | private static List msgsList;
15 |
16 | public static List getMsgs() {
17 | msgsList = new ArrayList<>();
18 | for (int i = 0; i < 5; i++) {
19 | Msg tem = new Msg();
20 | tem.setTitle("aa");
21 | tem.setContent("aa");
22 | tem.setCreateTime(System.currentTimeMillis());
23 | msgsList.add(tem);
24 | }
25 | return msgsList;
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/util/PollingUtils.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.util;
2 |
3 | import android.app.AlarmManager;
4 | import android.app.PendingIntent;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.os.SystemClock;
8 |
9 | /**
10 | * Created by PetterChen on 2017/5/16.
11 | */
12 |
13 | public class PollingUtils {
14 | //开启轮询服务
15 | public static void startPollingService(Context context, int seconds, Class> cls, String action) {
16 | //获取AlarmManager系统服务
17 | AlarmManager manager = (AlarmManager) context
18 | .getSystemService(Context.ALARM_SERVICE);
19 |
20 | //包装需要执行Service的Intent
21 | Intent intent = new Intent(context, cls);
22 | intent.setAction(action);
23 | PendingIntent pendingIntent = PendingIntent.getService(context, 0,
24 | intent, PendingIntent.FLAG_UPDATE_CURRENT);
25 |
26 | //触发服务的起始时间
27 | long triggerAtTime = SystemClock.elapsedRealtime();
28 |
29 | //使用AlarmManger的setRepeating方法设置定期执行的时间间隔(seconds秒)和需要执行的Service
30 | manager.set(AlarmManager.ELAPSED_REALTIME, triggerAtTime, pendingIntent);
31 | /*manager.setRepeating(AlarmManager.ELAPSED_REALTIME, triggerAtTime,
32 | seconds * 1000, pendingIntent);*/
33 | }
34 | //停止轮询服务
35 | public static void stopPollingService(Context context, Class> cls,String action) {
36 | AlarmManager manager = (AlarmManager) context
37 | .getSystemService(Context.ALARM_SERVICE);
38 | Intent intent = new Intent(context, cls);
39 | intent.setAction(action);
40 | PendingIntent pendingIntent = PendingIntent.getService(context, 0,
41 | intent, PendingIntent.FLAG_UPDATE_CURRENT);
42 | //取消正在执行的服务
43 | manager.cancel(pendingIntent);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/util/ResultInterceptor.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.util;
2 |
3 | import com.peter.schoolmarket.data.dto.Result;
4 |
5 | /**
6 | * Created by PetterChen on 2017/4/28.
7 | */
8 |
9 | public enum ResultInterceptor {
10 | instance;
11 |
12 | public boolean resultHandler(final Result> result){
13 | if (result==null){
14 | return false;
15 | }
16 |
17 | switch (result.getCode()) {
18 | case 99:
19 | return false;
20 | case 100:
21 | return true;
22 | default:
23 | return false;
24 | }
25 | }
26 |
27 | public boolean resultDataHandler(final Result> result){
28 |
29 | if (result==null||result.getData()==null){
30 | return false;
31 | }
32 | switch (result.getCode()) {
33 | case 100:
34 | return true;
35 | case 99:
36 | return false;
37 | default:
38 | return false;
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/util/SocketUtils.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.util;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.BufferedWriter;
5 | import java.io.IOException;
6 | import java.io.InputStreamReader;
7 | import java.io.OutputStreamWriter;
8 | import java.net.Socket;
9 |
10 | /**
11 | * Created by PetterChen on 2017/5/6.
12 | */
13 |
14 | public class SocketUtils {
15 |
16 | public static Socket initSocket(String site, int port){
17 | try {
18 | return new Socket(site,port);
19 | } catch (Exception e){
20 | e.printStackTrace();
21 | return null;
22 | }
23 | }
24 |
25 | public static void sendMsg(Socket client, String msg){
26 | try{
27 | BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
28 | writer.write(msg);
29 | writer.flush();
30 | writer.close();
31 | }catch(Exception e){
32 | e.printStackTrace();
33 | }
34 | }
35 | public static String receiverMsg(Socket client){
36 | String msg = null;
37 | try{
38 | BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream(),"utf-8"));
39 | if(reader.ready()) {
40 | msg = reader.readLine();
41 | }
42 | reader.close();
43 | return msg;
44 | }catch(Exception e){
45 | e.printStackTrace();
46 | return null;
47 | }
48 | }
49 |
50 | public static void closeSocket(Socket client){
51 | try{
52 | client.close();
53 | }catch(IOException e){
54 | e.printStackTrace();
55 | }
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/util/TimeUtils.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.util;
2 |
3 | import android.util.Log;
4 |
5 | import java.text.SimpleDateFormat;
6 | import java.util.Date;
7 | import java.util.Locale;
8 |
9 | /**
10 | * Created by PetterChen on 2017/5/6.
11 | */
12 |
13 | public class TimeUtils {
14 | // yyMMdd hh:mm:ss yyyy-MM-dd hh:mm:ss dd-MM-yyyy hh:mm:ss
15 | public static String getDateAndTime(long millTime) {
16 | Date d = new Date(millTime);
17 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
18 | //Log.d("time", "" + sdf.format(d));
19 | return sdf.format(d);
20 | }
21 |
22 | public static String getDate(long millTime) {
23 | Date d = new Date(millTime);
24 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
25 | String[] tem = sdf.format(d).split(" ");
26 | return tem[0];
27 | }
28 |
29 | public static String getTime(long millTime) {
30 | Date d = new Date(millTime);
31 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
32 | String[] tem = sdf.format(d).split(" ");
33 | return tem[1];
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/peter/schoolmarket/util/TradeTagUtils.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket.util;
2 |
3 | import com.peter.schoolmarket.R;
4 | import com.peter.schoolmarket.data.pojo.TradeTag;
5 |
6 | import java.util.ArrayList;
7 | import java.util.List;
8 |
9 | /**
10 | * Created by PetterChen on 2017/4/30.
11 | */
12 |
13 | public class TradeTagUtils {
14 | private static String[] nameList = {"学习资料", "体育用品", "生活用品", "手机相关", "电脑相关"};
15 | private static int[] nameId = {R.drawable.sort_book, R.drawable.sort_esercise, R.drawable.sort_life,
16 | R.drawable.sort_phone, R.drawable.sort_computer};
17 |
18 | private static List tradeTagList;
19 |
20 | public static List getTradeTag() {
21 | tradeTagList = new ArrayList<>();
22 | for (int i = 0; i < nameList.length; i++) {
23 | TradeTag newTradeTag = new TradeTag();
24 | newTradeTag.setRId(nameId[i]);
25 | newTradeTag.setName(nameList[i]);
26 | tradeTagList.add(newTradeTag);
27 | }
28 | return tradeTagList;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-hdpi/ic_empty.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-hdpi/ic_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/sort_book.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-hdpi/sort_book.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/sort_computer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-hdpi/sort_computer.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/sort_esercise.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-hdpi/sort_esercise.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/sort_life.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-hdpi/sort_life.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/sort_phone.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-hdpi/sort_phone.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-v21/ic_back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_camera.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_gallery.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_manage.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_send.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_share.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_menu_slideshow.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ic_small_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-v21/ic_small_cancel.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_navigation_chevron_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xhdpi/ic_action_navigation_chevron_left.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xhdpi/ic_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/main_bottom_wish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xhdpi/main_bottom_wish.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_arrow_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxhdpi/ic_arrow_left.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxhdpi/ic_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_send_msg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxhdpi/ic_send_msg.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_submit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxhdpi/ic_submit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxhdpi/icon_placeholder.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/trade_add_img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxhdpi/trade_add_img.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/phone_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable-xxxhdpi/phone_splash.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/button_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_pic_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/circle_pic_press.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_pic_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/divider_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_plus_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_plus_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_plus_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_plus_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_register.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_register.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_right_enter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_right_enter.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_search_back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_search_cancel.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_small_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/ic_small_cancel.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_about.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_author.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_author.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_bottom_find.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_bottom_find.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_bottom_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_bottom_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_bottom_msg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_bottom_msg.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_bottom_trade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_bottom_trade.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_bought.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_bought.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_boy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_boy.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_buying.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_buying.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_exit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_girl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_girl.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_like.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_notice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_notice.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_person.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_person.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_selling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_selling.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_setting.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_share.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/main_sold.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/main_sold.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/msg_pic_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/search_cursor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/side_nav_bar.xml:
--------------------------------------------------------------------------------
1 |
3 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sort_pic_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/splash_loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/splash_loading.gif
--------------------------------------------------------------------------------
/app/src/main/res/drawable/square_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/square_default.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/square_pic_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/square_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/square_press.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/trade_tag_detail_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/drawable/trade_tag_detail_next.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/trade_tag_search_cursor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/about_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
29 |
38 |
39 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/drawer_trade_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
29 |
38 |
39 |
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/drawer_trade_bought_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
17 |
18 |
23 |
24 |
25 |
29 |
30 |
37 |
38 |
45 |
46 |
53 |
54 |
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/drawer_trade_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
18 |
19 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/drawer_trade_sold_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
17 |
18 |
23 |
24 |
25 |
29 |
30 |
37 |
38 |
45 |
46 |
53 |
54 |
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/find_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/login_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/login_login_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/login_register_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/main_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
15 |
19 |
20 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/main_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
24 |
33 |
34 |
39 |
40 |
46 |
47 |
48 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/main_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
18 |
19 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/main_nav_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
22 |
23 |
30 |
31 |
40 |
41 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/message_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
15 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/more_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
19 |
20 |
21 |
22 |
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/msg_detail_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
29 |
30 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/msg_detail_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
27 |
28 |
37 |
38 |
44 |
45 |
46 |
47 |
51 |
52 |
67 |
68 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/notice_add_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
25 |
26 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/notice_detail_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
29 |
38 |
39 |
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/notice_my_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
29 |
38 |
39 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/notice_my_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/sort_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/sort_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
13 |
19 |
23 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/splash_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/test_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/test_msg_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
15 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/test_msg_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
26 |
27 |
39 |
40 |
41 |
42 |
58 |
59 |
63 |
64 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/trade_tag_detail_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
18 |
19 |
28 |
37 |
38 |
45 |
46 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/trade_tag_detail_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
19 |
20 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/main_activity_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
67 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/search_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Android
5 | - 风扇
6 | - 充电器
7 | - 耳机
8 | - 笔记本
9 | - 键盘
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | #ffffff
6 | #9e9e9e
7 | #000000
8 |
9 |
10 | #e0e0e0
11 | #000000
12 | #ffffff
13 | #ffffff
14 | #000000
15 | #424242
16 |
17 | #fafafa
18 | #9e9e9e
19 | #FF4081
20 |
21 | #fafafa
22 | #000000
23 | #aaaaaa
24 | #666666
25 | #333333
26 | #eeeeee
27 |
28 | #e6e6e6
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 | 16dp
7 | 116dp
8 | 16dp
9 |
10 |
11 |
12 | 10sp
13 | 16sp
14 | 18sp
15 | 20sp
16 | 22sp
17 |
18 |
19 | 20sp
20 | 18sp
21 | 16sp
22 | 20sp
23 | 14sp
24 |
25 | 56dp
26 | 34dp
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/values/drawables.xml:
--------------------------------------------------------------------------------
1 |
2 | - @android:drawable/ic_menu_camera
3 | - @android:drawable/ic_menu_gallery
4 | - @android:drawable/ic_menu_slideshow
5 | - @android:drawable/ic_menu_manage
6 | - @android:drawable/ic_menu_share
7 | - @android:drawable/ic_menu_send
8 |
9 |
--------------------------------------------------------------------------------
/app/src/test/java/com/peter/schoolmarket/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.peter.schoolmarket;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.2.0'
9 | //添加realm插件
10 | classpath "io.realm:realm-gradle-plugin:2.2.1"
11 | //dagger2
12 | classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //添加apt
13 |
14 | // NOTE: Do not place your application dependencies here; they belong
15 | // in the individual module build.gradle files
16 | }
17 | }
18 |
19 | allprojects {
20 | repositories {
21 | maven {
22 | url "https://jitpack.io"
23 | }
24 | jcenter()
25 | }
26 | }
27 |
28 | task clean(type: Delete) {
29 | delete rootProject.buildDir
30 | }
31 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenbd1001/SchoolMarket/31629cec56d006b411c082a7a5b378223e0bca9f/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Dec 28 10:00:20 PST 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------