├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── markdown-navigator │ └── profiles_settings.xml ├── misc.xml ├── modules.xml └── runConfigurations.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── cn │ │ └── yhq │ │ └── page │ │ └── sample │ │ ├── API.java │ │ ├── AlbumCheckedPageAdapter.java │ │ ├── AlbumPageAdapter.java │ │ ├── AlbumPageDialog1.java │ │ ├── AlbumPageDialog2.java │ │ ├── AlbumPageDialog3.java │ │ ├── AlbumPageDialog4.java │ │ ├── AlbumRecyclerPageAdapter.java │ │ ├── AutoRefreshPageActivity.java │ │ ├── CheckedPageActivity.java │ │ ├── HttpAPIClient.java │ │ ├── MainActivity.java │ │ ├── NetworkPageActivity.java │ │ ├── OkhttpPageActivity.java │ │ ├── OkhttpPageRequester.java │ │ ├── PageDataParser.java │ │ ├── RecyclerPageActivity.java │ │ ├── SimplePageActivity1.java │ │ ├── SimplePageActivity2.java │ │ ├── SimplePageActivity3.java │ │ ├── SimplePageAdapter.java │ │ ├── SwipeRefreshLayoutPageActivity.java │ │ ├── TestActivity.java │ │ ├── entity │ │ ├── Album.java │ │ ├── AlbumInfo.java │ │ ├── Albums.java │ │ ├── Artists.java │ │ ├── Medias.java │ │ └── Tracks.java │ │ └── entity1 │ │ ├── Data.java │ │ ├── ParentData.java │ │ └── Response.java │ └── res │ ├── layout │ ├── activity_auto_refresh.xml │ ├── activity_chooser.xml │ ├── activity_main.xml │ ├── activity_network_page.xml │ ├── activity_recycler.xml │ ├── activity_swipe_layout.xml │ ├── activity_swipe_refresh.xml │ └── listitem_checked.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-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ ├── cn │ │ └── yhq │ │ │ ├── page │ │ │ ├── adapter │ │ │ │ ├── PageExpandableListAdapter.java │ │ │ │ ├── PageListAdapter.java │ │ │ │ ├── PageRecyclerListAdapter.java │ │ │ │ └── SimplePageStringListAdapter.java │ │ │ ├── core │ │ │ │ ├── DataAppendMode.java │ │ │ │ ├── DefaultOnPageDataStateSaved.java │ │ │ │ ├── DefaultOnPageListener.java │ │ │ │ ├── DefaultPageSearcher.java │ │ │ │ ├── IFilter.java │ │ │ │ ├── IFilterName.java │ │ │ │ ├── IPageAdapter.java │ │ │ │ ├── IPageChecker.java │ │ │ │ ├── IPageDataIntercept.java │ │ │ │ ├── IPageDataParser.java │ │ │ │ ├── IPageRequester.java │ │ │ │ ├── IPageResponse.java │ │ │ │ ├── IPageSearcher.java │ │ │ │ ├── IStateSaved.java │ │ │ │ ├── OnPageCheckedChangeListener.java │ │ │ │ ├── OnPageCheckedEquals.java │ │ │ │ ├── OnPageCheckedInitListener.java │ │ │ │ ├── OnPageDataStateSaved.java │ │ │ │ ├── OnPageListener.java │ │ │ │ ├── OnPageListenerDispatcher.java │ │ │ │ ├── OnPullToRefreshProvider.java │ │ │ │ ├── Page.java │ │ │ │ ├── PageAction.java │ │ │ │ ├── PageChecker.java │ │ │ │ ├── PageCheckerInterface.java │ │ │ │ ├── PageEngine.java │ │ │ │ ├── PageManager.java │ │ │ │ ├── PageRequester.java │ │ │ │ ├── PageSearcher.java │ │ │ │ └── SearchHelper.java │ │ │ ├── http │ │ │ │ ├── RetrofitPageActivity.java │ │ │ │ ├── RetrofitPageCheckedActivity.java │ │ │ │ ├── RetrofitPageCheckedFragment.java │ │ │ │ ├── RetrofitPageDialog.java │ │ │ │ ├── RetrofitPageFragment.java │ │ │ │ ├── RetrofitPageRequester.java │ │ │ │ └── RetrofitPageRequester2.java │ │ │ ├── pulltorefresh │ │ │ │ ├── PullToRefreshAutoRefreshListViewContext.java │ │ │ │ ├── PullToRefreshAutoRefreshRecyclerListViewContext.java │ │ │ │ ├── PullToRefreshContext.java │ │ │ │ ├── PullToRefreshContextFactory.java │ │ │ │ ├── PullToRefreshContextWrapper.java │ │ │ │ ├── PullToRefreshDefaultContext.java │ │ │ │ ├── PullToRefreshSwipeLayoutContext.java │ │ │ │ ├── PullToRefreshSwipeLayoutExpandableListViewContext.java │ │ │ │ ├── PullToRefreshSwipeLayoutListViewContext.java │ │ │ │ ├── PullToRefreshSwipeLayoutRecyclerListViewContext.java │ │ │ │ ├── PullToRefreshSwipeLayoutXExpandableListViewContext.java │ │ │ │ ├── PullToRefreshSwipeLayoutXListViewContext.java │ │ │ │ ├── PullToRefreshSwipeLayoutXRecyclerListViewContext.java │ │ │ │ ├── PullToRefreshXExpandableListViewContext.java │ │ │ │ ├── PullToRefreshXExpandableListViewContextWrapper.java │ │ │ │ ├── PullToRefreshXListViewContext.java │ │ │ │ ├── PullToRefreshXListViewContextWrapper.java │ │ │ │ ├── PullToRefreshXRecyclerListViewContext.java │ │ │ │ └── PullToRefreshXRecyclerListViewContextWrapper.java │ │ │ ├── simple │ │ │ │ ├── SimpleListViewPageActivity.java │ │ │ │ ├── SimpleListViewPageDialog.java │ │ │ │ ├── SimpleListViewPageFragment.java │ │ │ │ ├── SimplePageActivity.java │ │ │ │ ├── SimplePageDataParser.java │ │ │ │ ├── SimplePageDialog.java │ │ │ │ ├── SimplePageFragment.java │ │ │ │ └── SimplePageRequester.java │ │ │ └── ui │ │ │ │ ├── BasePageViewHandler.java │ │ │ │ ├── DefaultPageViewHandler.java │ │ │ │ ├── IPageContextProvider.java │ │ │ │ ├── IPageViewHandler.java │ │ │ │ ├── IPageViewManager.java │ │ │ │ ├── IPageViewProvider.java │ │ │ │ ├── OnReRequestListener.java │ │ │ │ ├── PageActivity.java │ │ │ │ ├── PageConfig.java │ │ │ │ ├── PageContext.java │ │ │ │ ├── PageDialog.java │ │ │ │ ├── PageFragment.java │ │ │ │ ├── PageListViewHandler.java │ │ │ │ ├── PageRecyclerViewHandler.java │ │ │ │ ├── PageViewHandler.java │ │ │ │ ├── PageViewHandlerFactory.java │ │ │ │ ├── PageViewManager.java │ │ │ │ └── PageViewProvider.java │ │ │ └── widget │ │ │ ├── AutoRefreshListView.java │ │ │ └── AutoRefreshRecyclerListView.java │ └── com │ │ └── markmao │ │ └── pulltorefresh │ │ └── widget │ │ ├── XExpandableListView.java │ │ ├── XFooterView.java │ │ ├── XHeaderView.java │ │ ├── XListView.java │ │ └── XScrollView.java │ └── res │ ├── drawable-hdpi │ ├── arrow_down.png │ ├── arrow_up.png │ └── ic_no_content.png │ ├── layout │ ├── emptyview.xml │ ├── loadingview.xml │ ├── page_listview.xml │ ├── pagelayout.xml │ ├── progressbar.xml │ ├── vw_footer.xml │ ├── vw_header.xml │ ├── vw_scroll_view_content.xml │ └── vw_xscrollview_layout.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ └── strings.xml ├── screenshots ├── 截屏_20161012_164901.png ├── 截屏_20161012_164912.png ├── 截屏_20161012_164915.png ├── 截屏_20161012_164922.png ├── 截屏_20161012_164948.png ├── 截屏_20161012_164951.png └── 截屏_20161012_164957.png └── 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/misc.xml 11 | /.idea/vcs.xml 12 | -------------------------------------------------------------------------------- /.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/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/markdown-navigator/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 23 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | Class structureJava 43 | 44 | 45 | Code maturity issuesJava 46 | 47 | 48 | Java 49 | 50 | 51 | Java language level migration aidsJava 52 | 53 | 54 | Javadoc issuesJava 55 | 56 | 57 | Performance issuesJava 58 | 59 | 60 | TestNGJava 61 | 62 | 63 | Threading issuesJava 64 | 65 | 66 | 67 | 68 | Android 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 80 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 27 5 | buildToolsVersion "27.0.3" 6 | defaultConfig { 7 | applicationId "cn.yhq.page.sample" 8 | minSdkVersion 14 9 | targetSdkVersion 27 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | compile fileTree(include: ['*.jar'], dir: 'libs') 23 | compile 'com.android.support:appcompat-v7:27.1.0' 24 | compile 'com.zhy:okhttputils:2.6.2' 25 | compile project(':library') 26 | } 27 | -------------------------------------------------------------------------------- /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 E:\work\adt\adt-bundle-windows-x86_64-20140702\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/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/API.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import cn.yhq.http.core.ICall; 4 | import cn.yhq.page.sample.entity.AlbumInfo; 5 | import retrofit2.http.GET; 6 | import retrofit2.http.Query; 7 | 8 | /** 9 | * Created by Yanghuiqiang on 2016/10/12. 10 | */ 11 | 12 | public interface API { 13 | 14 | @GET("search-ajaxsearch-searchall") 15 | ICall getAlbumInfo(@Query("kw") String keyword, @Query("pz") int pageSize, @Query("pi") int pageIndex); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/AlbumCheckedPageAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | import android.widget.CheckBox; 6 | import android.widget.CompoundButton; 7 | 8 | import cn.yhq.adapter.recycler.ItemViewProvider2; 9 | import cn.yhq.adapter.recycler.ViewHolder; 10 | import cn.yhq.page.adapter.PageRecyclerListAdapter; 11 | import cn.yhq.page.sample.entity.Tracks; 12 | 13 | /** 14 | * Created by Yanghuiqiang on 2016/10/12. 15 | */ 16 | 17 | public class AlbumCheckedPageAdapter extends PageRecyclerListAdapter { 18 | private CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener; 19 | private View.OnClickListener mOnCheckBoxClickListener; 20 | 21 | public AlbumCheckedPageAdapter(Context context) { 22 | super(context); 23 | this.register(new ItemViewProvider2() { 24 | 25 | @Override 26 | public boolean isForProvider(int position, Tracks entity) { 27 | return true; 28 | } 29 | 30 | @Override 31 | public void onBindViewHolder(ViewHolder viewHolder, int position, Tracks entity) { 32 | super.onBindViewHolder(viewHolder, position, entity); 33 | CheckBox checkBox = viewHolder.getView(R.id.checkbox); 34 | viewHolder.setChecked(R.id.checkbox, isChecked(position)) 35 | .setText(R.id.text, highlight(entity.getTitle())); 36 | checkBox.setEnabled(!isDisabled(position)); 37 | checkBox.setTag(position); 38 | checkBox.setOnCheckedChangeListener(mOnCheckedChangeListener); 39 | checkBox.setOnClickListener(mOnCheckBoxClickListener); 40 | } 41 | 42 | @Override 43 | public int getItemViewLayoutId() { 44 | return R.layout.listitem_checked; 45 | } 46 | }); 47 | } 48 | 49 | public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) { 50 | this.mOnCheckedChangeListener = listener; 51 | } 52 | 53 | public void setOnCheckBoxClickListener(View.OnClickListener listener) { 54 | this.mOnCheckBoxClickListener = listener; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/AlbumPageAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | 5 | import cn.yhq.adapter.core.ViewHolder; 6 | import cn.yhq.adapter.list.ItemViewProvider2; 7 | import cn.yhq.page.adapter.PageListAdapter; 8 | import cn.yhq.page.core.DataAppendMode; 9 | import cn.yhq.page.sample.entity.Tracks; 10 | 11 | /** 12 | * Created by Yanghuiqiang on 2016/10/12. 13 | */ 14 | 15 | public class AlbumPageAdapter extends PageListAdapter { 16 | 17 | public AlbumPageAdapter(Context context) { 18 | super(context); 19 | this.register(new ItemViewProvider2() { 20 | @Override 21 | public int getItemViewLayoutId() { 22 | return android.R.layout.simple_list_item_1; 23 | } 24 | 25 | @Override 26 | public void setupView(ViewHolder viewHolder, int position, Tracks entity) { 27 | viewHolder.setText(android.R.id.text1, highlight(entity.getTitle())); 28 | } 29 | 30 | @Override 31 | public boolean isForProvider(int position, Tracks entity) { 32 | return true; 33 | } 34 | }); 35 | } 36 | 37 | @Override 38 | public DataAppendMode getDataAppendMode() { 39 | return DataAppendMode.MODE_BEFORE; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/AlbumPageDialog1.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | import android.os.Bundle; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.widget.ListView; 8 | 9 | import cn.yhq.dialog.core.IDialog; 10 | import cn.yhq.http.core.ICall; 11 | import cn.yhq.page.core.IPageAdapter; 12 | import cn.yhq.page.core.IPageDataParser; 13 | import cn.yhq.page.http.RetrofitPageDialog; 14 | import cn.yhq.page.sample.entity.AlbumInfo; 15 | import cn.yhq.page.sample.entity.Tracks; 16 | import cn.yhq.page.ui.PageConfig; 17 | 18 | /** 19 | * Created by Yanghuiqiang on 2016/10/21. 20 | */ 21 | 22 | public class AlbumPageDialog1 extends RetrofitPageDialog { 23 | private ListView mListView; 24 | private AlbumPageAdapter mPageAdapter; 25 | 26 | public AlbumPageDialog1(Context context) { 27 | super(context); 28 | } 29 | 30 | @Override 31 | protected IDialog onCreateDialog(Bundle args) { 32 | return this.getDefaultDialogBuilder().setTitle("搜索结果").create(); 33 | } 34 | 35 | @Override 36 | public View getPageView() { 37 | return mListView; 38 | } 39 | 40 | @Override 41 | public void onPageConfig(PageConfig pageConfig) { 42 | super.onPageConfig(pageConfig); 43 | pageConfig.setPageSize(5); 44 | } 45 | 46 | @Override 47 | public void onViewCreated(Bundle args) { 48 | View v = LayoutInflater.from(getContext()).inflate(R.layout.activity_network_page, null, false); 49 | mListView = (ListView) v.findViewById(R.id.list_view); 50 | mPageAdapter = new AlbumPageAdapter(getContext()); 51 | mListView.setAdapter(mPageAdapter); 52 | } 53 | 54 | @Override 55 | public ICall executePageRequest(int pageSize, int currentPage, Tracks mData) { 56 | return HttpAPIClient.getAPI().getAlbumInfo("夜曲", pageSize, currentPage); 57 | } 58 | 59 | @Override 60 | public IPageAdapter getPageAdapter() { 61 | return mPageAdapter; 62 | } 63 | 64 | @Override 65 | public IPageDataParser getPageDataParser() { 66 | return new PageDataParser(); 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/AlbumPageDialog2.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | import android.os.Bundle; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.widget.ListView; 8 | 9 | import com.zhy.http.okhttp.OkHttpUtils; 10 | import com.zhy.http.okhttp.request.RequestCall; 11 | 12 | import cn.yhq.page.core.IPageAdapter; 13 | import cn.yhq.page.core.IPageDataParser; 14 | import cn.yhq.page.core.IPageRequester; 15 | import cn.yhq.page.sample.entity.AlbumInfo; 16 | import cn.yhq.page.sample.entity.Tracks; 17 | import cn.yhq.page.ui.PageConfig; 18 | import cn.yhq.page.ui.PageDialog; 19 | 20 | /** 21 | * Created by Yanghuiqiang on 2016/10/21. 22 | */ 23 | 24 | public class AlbumPageDialog2 extends PageDialog { 25 | private ListView mListView; 26 | private AlbumPageAdapter mPageAdapter; 27 | 28 | public AlbumPageDialog2(Context context) { 29 | super(context); 30 | } 31 | 32 | @Override 33 | public View getPageView() { 34 | return mListView; 35 | } 36 | 37 | @Override 38 | public void onPageConfig(PageConfig pageConfig) { 39 | super.onPageConfig(pageConfig); 40 | pageConfig.setPageSize(5); 41 | } 42 | 43 | @Override 44 | public void onViewCreated(Bundle args) { 45 | View v = LayoutInflater.from(getContext()).inflate(R.layout.activity_network_page, null, false); 46 | mListView = (ListView) v.findViewById(R.id.list_view); 47 | mPageAdapter = new AlbumPageAdapter(getContext()); 48 | mListView.setAdapter(mPageAdapter); 49 | } 50 | 51 | @Override 52 | public IPageAdapter getPageAdapter() { 53 | return mPageAdapter; 54 | } 55 | 56 | @Override 57 | public IPageRequester getPageRequester() { 58 | return new OkHttpPageRequester(getContext()) { 59 | 60 | @Override 61 | public RequestCall getRequestCall(int pageSize, int pageIndex, Tracks data) { 62 | return OkHttpUtils.get() 63 | .url("http://v5.pc.duomi.com/search-ajaxsearch-searchall") 64 | .addParams("kw", "夜曲") 65 | .addParams("pz", String.valueOf(pageSize)) 66 | .addParams("pi", String.valueOf(pageIndex)) 67 | .build(); 68 | } 69 | }; 70 | } 71 | 72 | @Override 73 | public IPageDataParser getPageDataParser() { 74 | return new PageDataParser(); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/AlbumPageDialog4.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | import android.os.Bundle; 5 | import android.os.Handler; 6 | import android.os.Message; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | import cn.yhq.page.core.IPageRequester; 12 | import cn.yhq.page.core.Page; 13 | import cn.yhq.page.core.PageAction; 14 | import cn.yhq.page.core.PageRequester; 15 | import cn.yhq.page.simple.SimpleListViewPageDialog; 16 | 17 | /** 18 | * Created by Yanghuiqiang on 2016/10/21. 19 | */ 20 | 21 | public class AlbumPageDialog4 extends SimpleListViewPageDialog { 22 | 23 | public AlbumPageDialog4(Context context) { 24 | super(context); 25 | } 26 | 27 | @Override 28 | public void onViewCreated(Bundle args) { 29 | super.onViewCreated(args); 30 | this.setListAdapter(new SimplePageAdapter(getContext())); 31 | } 32 | 33 | // 如果是非耗时操作,则不需要重写此方法 34 | // 如果是耗时操作,则需要重写 35 | @Override 36 | public IPageRequester, String> getPageRequester() { 37 | return new PageRequester, String>(getContext()) { 38 | private Thread thread; 39 | 40 | @Override 41 | public void onCancel() { 42 | thread.interrupt(); 43 | } 44 | 45 | @Override 46 | public void executeRequest(Context context, PageAction pageAction, Page page) { 47 | final Handler handler = new Handler() { 48 | @Override 49 | public void handleMessage(Message msg) { 50 | super.handleMessage(msg); 51 | switch (msg.what) { 52 | case 1: 53 | callCacheResponse((List) msg.obj); 54 | break; 55 | case 2: 56 | callNetworkResponse((List) msg.obj); 57 | break; 58 | } 59 | } 60 | }; 61 | // 模拟耗时操作,1秒后获取缓存数据并返回,2秒后获取请求数据返回 62 | thread = new Thread(new Runnable() { 63 | @Override 64 | public void run() { 65 | try { 66 | Thread.sleep(1000); 67 | } catch (InterruptedException e) { 68 | e.printStackTrace(); 69 | } 70 | Message msg1 = new Message(); 71 | msg1.obj = getCacheData(); 72 | msg1.what = 1; 73 | handler.sendMessage(msg1); 74 | try { 75 | Thread.sleep(2000); 76 | } catch (InterruptedException e) { 77 | e.printStackTrace(); 78 | } 79 | Message msg2 = new Message(); 80 | msg2.obj = getNetworkData(); 81 | msg2.what = 2; 82 | handler.sendMessage(msg2); 83 | } 84 | }); 85 | thread.start(); 86 | } 87 | }; 88 | } 89 | 90 | private List getNetworkData() { 91 | List data = new ArrayList<>(); 92 | // for (int i = 0; i < 10; i++) { 93 | // data.add("请求条目" + i); 94 | // } 95 | return data; 96 | } 97 | 98 | private List getCacheData() { 99 | List data = new ArrayList<>(); 100 | for (int i = 0; i < 10; i++) { 101 | data.add("缓存条目" + i); 102 | } 103 | return data; 104 | } 105 | 106 | @Override 107 | public List getPageData() { 108 | return null; 109 | } 110 | 111 | // @Override 112 | // public IPageViewProvider getPageViewProvider() { 113 | // return new IPageViewProvider() { 114 | // 115 | // @Override 116 | // public View getPageView() { 117 | // return SimplePageActivity2.this.getPageView(); 118 | // } 119 | // 120 | // @Override 121 | // public int getPageLoadingView() { 122 | // return R.layout.custom_loading_view; 123 | // } 124 | // 125 | // @Override 126 | // public int getPageEmptyView() { 127 | // return R.layout.custom_empty_view; 128 | // } 129 | // }; 130 | // } 131 | 132 | } 133 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/AlbumRecyclerPageAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | 5 | import cn.yhq.adapter.recycler.ItemViewProvider2; 6 | import cn.yhq.adapter.recycler.ViewHolder; 7 | import cn.yhq.page.adapter.PageRecyclerListAdapter; 8 | import cn.yhq.page.core.DataAppendMode; 9 | import cn.yhq.page.sample.entity.Tracks; 10 | 11 | /** 12 | * Created by Yanghuiqiang on 2016/10/12. 13 | */ 14 | 15 | public class AlbumRecyclerPageAdapter extends PageRecyclerListAdapter { 16 | 17 | public AlbumRecyclerPageAdapter(Context context) { 18 | super(context); 19 | this.register(new ItemViewProvider2() { 20 | 21 | @Override 22 | public boolean isForProvider(int position, Tracks entity) { 23 | return true; 24 | } 25 | 26 | @Override 27 | public void onBindViewHolder(ViewHolder viewHolder, int position, Tracks entity) { 28 | super.onBindViewHolder(viewHolder, position, entity); 29 | viewHolder.setText(android.R.id.text1, highlight(entity.getTitle())); 30 | } 31 | 32 | @Override 33 | public int getItemViewLayoutId() { 34 | return android.R.layout.simple_list_item_1; 35 | } 36 | }); 37 | } 38 | 39 | @Override 40 | public DataAppendMode getDataAppendMode() { 41 | return DataAppendMode.MODE_BEFORE; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/AutoRefreshPageActivity.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.view.View; 5 | 6 | import cn.yhq.http.core.ICall; 7 | import cn.yhq.page.core.IPageAdapter; 8 | import cn.yhq.page.core.IPageDataParser; 9 | import cn.yhq.page.http.RetrofitPageActivity; 10 | import cn.yhq.page.sample.entity.AlbumInfo; 11 | import cn.yhq.page.sample.entity.Tracks; 12 | import cn.yhq.page.ui.PageConfig; 13 | import cn.yhq.widget.AutoRefreshListView; 14 | 15 | /** 16 | * Created by Yanghuiqiang on 2016/10/12. 17 | */ 18 | 19 | public class AutoRefreshPageActivity extends RetrofitPageActivity { 20 | private AutoRefreshListView mListView; 21 | private AlbumPageAdapter mPageAdapter; 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | } 27 | 28 | @Override 29 | protected int getContentViewLayoutId() { 30 | return R.layout.activity_auto_refresh; 31 | } 32 | 33 | @Override 34 | public void onViewCreated(Bundle savedInstanceState) { 35 | super.onViewCreated(savedInstanceState); 36 | mListView = (AutoRefreshListView) this.findViewById(R.id.list_view); 37 | mPageAdapter = new AlbumPageAdapter(this); 38 | mListView.setAdapter(mPageAdapter); 39 | } 40 | 41 | @Override 42 | public View getPageView() { 43 | return mListView; 44 | } 45 | 46 | @Override 47 | public void onPageConfig(PageConfig pageConfig) { 48 | super.onPageConfig(pageConfig); 49 | // 设置分页大小 50 | pageConfig.setPageSize(12); 51 | } 52 | 53 | @Override 54 | public ICall executePageRequest(int pageSize, int currentPage, Tracks mData) { 55 | return HttpAPIClient.getAPI().getAlbumInfo("ldh", pageSize, currentPage); 56 | } 57 | 58 | @Override 59 | public IPageAdapter getPageAdapter() { 60 | return mPageAdapter; 61 | } 62 | 63 | @Override 64 | public IPageDataParser getPageDataParser() { 65 | return new PageDataParser(); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/CheckedPageActivity.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.view.View; 5 | import android.widget.Button; 6 | import android.widget.CheckBox; 7 | 8 | import java.util.List; 9 | 10 | import cn.yhq.adapter.recycler.OnRecyclerViewItemClickListener; 11 | import cn.yhq.http.core.ICall; 12 | import cn.yhq.page.core.IPageAdapter; 13 | import cn.yhq.page.core.IPageDataParser; 14 | import cn.yhq.page.core.OnPageCheckedChangeListener; 15 | import cn.yhq.page.core.OnPageCheckedInitListener; 16 | import cn.yhq.page.core.PageChecker; 17 | import cn.yhq.page.http.RetrofitPageCheckedActivity; 18 | import cn.yhq.page.sample.entity.AlbumInfo; 19 | import cn.yhq.page.sample.entity.Tracks; 20 | import cn.yhq.page.ui.PageConfig; 21 | import cn.yhq.utils.JsonUtils; 22 | import cn.yhq.widget.xrecyclerview.XRecyclerListView; 23 | 24 | /** 25 | * Created by yanghuijuan on 2017/1/31. 26 | */ 27 | 28 | public class CheckedPageActivity extends RetrofitPageCheckedActivity { 29 | private XRecyclerListView mListView; 30 | private AlbumCheckedPageAdapter mPageAdapter; 31 | private Button mOKButton; 32 | private CheckBox mAllCheckButton; 33 | 34 | @Override 35 | protected int getContentViewLayoutId() { 36 | return R.layout.activity_chooser; 37 | } 38 | 39 | @Override 40 | public void onViewCreated(Bundle savedInstanceState) { 41 | mAllCheckButton = this.getView(R.id.cb_choose_side); 42 | mOKButton = this.getView(R.id.btn_choose); 43 | mListView = this.getView(R.id.list_view); 44 | mPageAdapter = new AlbumCheckedPageAdapter(getContext()); 45 | mListView.setAdapter(mPageAdapter); 46 | mPageAdapter.setOnCheckBoxClickListener(new View.OnClickListener() { 47 | @Override 48 | public void onClick(View v) { 49 | toggleChecked((Integer) v.getTag()); 50 | } 51 | }); 52 | this.setPageChecker(PageChecker.CHECK_MODEL_MUTIPLE, new OnPageCheckedChangeListener() { 53 | @Override 54 | public void onPageCheckedChanged(List checkedList, int count) { 55 | mAllCheckButton.setChecked(isAllChecked()); 56 | mOKButton.setText("选择(" + count + ")"); 57 | } 58 | }, new OnPageCheckedInitListener() { 59 | @Override 60 | public boolean isEnable(int position, Tracks entity) { 61 | if (position == 0 || position == 8) { 62 | return false; 63 | } 64 | return true; 65 | } 66 | @Override 67 | public boolean isChecked(int position, Tracks entity) { 68 | if (position == 1 || position == 9) { 69 | return true; 70 | } 71 | return false; 72 | } 73 | }); 74 | mListView.setOnRecyclerViewItemClickListener(new OnRecyclerViewItemClickListener() { 75 | @Override 76 | public void onRecyclerViewItemClick(View itemView, final int position) { 77 | toggleChecked(position); 78 | } 79 | }); 80 | mAllCheckButton.setOnClickListener(new View.OnClickListener() { 81 | @Override 82 | public void onClick(View view) { 83 | setAllChecked(mAllCheckButton.isChecked()); 84 | } 85 | }); 86 | mOKButton.setOnClickListener(new View.OnClickListener() { 87 | @Override 88 | public void onClick(View view) { 89 | List list = getCheckedEntityList(false); 90 | showToast(JsonUtils.toJson(list)); 91 | } 92 | }); 93 | } 94 | 95 | @Override 96 | public View getPageView() { 97 | return mListView; 98 | } 99 | 100 | @Override 101 | public void onPageConfig(PageConfig pageConfig) { 102 | super.onPageConfig(pageConfig); 103 | // 设置分页大小 104 | pageConfig.setPageSize(5); 105 | } 106 | 107 | @Override 108 | public ICall executePageRequest(int pageSize, int currentPage, Tracks mData) { 109 | return HttpAPIClient.getAPI().getAlbumInfo("夜曲", pageSize, currentPage); 110 | } 111 | 112 | @Override 113 | public IPageAdapter getPageAdapter() { 114 | return mPageAdapter; 115 | } 116 | 117 | @Override 118 | public IPageDataParser getPageDataParser() { 119 | return new PageDataParser(); 120 | } 121 | 122 | 123 | } 124 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/HttpAPIClient.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | 5 | import cn.yhq.http.core.HttpRequester; 6 | 7 | /** 8 | * Created by Yanghuiqiang on 2016/10/12. 9 | */ 10 | 11 | public class HttpAPIClient { 12 | 13 | public static void init(Context context) { 14 | HttpRequester.init(context); 15 | HttpRequester.registerXAPI("http://v5.pc.duomi.com", API.class); 16 | } 17 | 18 | public static API getAPI() { 19 | return HttpRequester.getAPI(API.class); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/MainActivity.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.view.View; 5 | import android.widget.AdapterView; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | import cn.yhq.dialog.core.IDialog; 11 | import cn.yhq.page.simple.SimpleListViewPageActivity; 12 | 13 | public class MainActivity extends SimpleListViewPageActivity { 14 | 15 | @Override 16 | protected void onCreate(Bundle savedInstanceState) { 17 | super.onCreate(savedInstanceState); 18 | HttpAPIClient.init(this); 19 | } 20 | 21 | @Override 22 | protected void onConfig(Config config) { 23 | super.onConfig(config); 24 | config.setSwipeBackWrapper(false); 25 | } 26 | 27 | @Override 28 | public IDialog createDialog(int id, Bundle args) { 29 | switch (id) { 30 | case 1: 31 | return new AlbumPageDialog4(this).create(); 32 | case 2: 33 | return new AlbumPageDialog1(this).create(); 34 | case 3: 35 | return new AlbumPageDialog2(this).create(); 36 | } 37 | return null; 38 | } 39 | 40 | @Override 41 | public void onItemClick(AdapterView parent, View view, int position, long id) { 42 | super.onItemClick(parent, view, position, id); 43 | switch (position) { 44 | case 0: 45 | startActivity(SimplePageActivity1.class); 46 | break; 47 | case 1: 48 | startActivity(SimplePageActivity2.class); 49 | break; 50 | case 2: 51 | startActivity(NetworkPageActivity.class); 52 | break; 53 | case 3: 54 | startActivity(SwipeRefreshLayoutPageActivity.class); 55 | break; 56 | case 4: 57 | startActivity(OkHttpPageActivity.class); 58 | break; 59 | case 5: 60 | startActivity(AutoRefreshPageActivity.class); 61 | break; 62 | case 6: 63 | showDialogFragment(1); 64 | break; 65 | case 7: 66 | showDialogFragment(2); 67 | break; 68 | case 8: 69 | showDialogFragment(3); 70 | break; 71 | case 9: 72 | startActivity(RecyclerPageActivity.class); 73 | break; 74 | case 10: 75 | startActivity(CheckedPageActivity.class); 76 | break; 77 | } 78 | } 79 | 80 | @Override 81 | public void onViewCreated(Bundle savedInstanceState) { 82 | super.onViewCreated(savedInstanceState); 83 | this.getSupportActionBar().setDisplayHomeAsUpEnabled(false); 84 | this.setListAdapter(new SimplePageAdapter(this)); 85 | } 86 | 87 | // 如果是非耗时操作,则可以直接返回要适配的数据 88 | @Override 89 | public List getPageData() { 90 | List data = new ArrayList<>(); 91 | data.add("非耗时返回本地数据"); 92 | data.add("耗时返回本地数据"); 93 | data.add("耗时返回网络数据"); 94 | data.add("自定义下拉刷新控件返回网络数据"); 95 | data.add("自定义网络请求框架返回网络数据"); 96 | data.add("类似微信、QQ拉到头部自动刷新的listview"); 97 | data.add("耗时返回本地数据对话框"); 98 | data.add("耗时返回网络数据对话框"); 99 | data.add("自定义网络请求框架返回网络数据对话框"); 100 | data.add("带检索的列表"); 101 | data.add("可以多选的列表"); 102 | return data; 103 | } 104 | 105 | } 106 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/NetworkPageActivity.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.view.View; 5 | 6 | import com.markmao.pulltorefresh.widget.XListView; 7 | 8 | import java.util.List; 9 | 10 | import cn.yhq.http.core.ICall; 11 | import cn.yhq.page.core.IPageAdapter; 12 | import cn.yhq.page.core.IPageDataParser; 13 | import cn.yhq.page.http.RetrofitPageActivity; 14 | import cn.yhq.page.sample.entity.AlbumInfo; 15 | import cn.yhq.page.sample.entity.Tracks; 16 | import cn.yhq.page.ui.PageConfig; 17 | 18 | /** 19 | * Created by Yanghuiqiang on 2016/10/12. 20 | */ 21 | 22 | public class NetworkPageActivity extends RetrofitPageActivity { 23 | private XListView mListView; 24 | private AlbumPageAdapter mPageAdapter; 25 | 26 | @Override 27 | protected void onCreate(Bundle savedInstanceState) { 28 | super.onCreate(savedInstanceState); 29 | } 30 | 31 | @Override 32 | protected int getContentViewLayoutId() { 33 | return R.layout.activity_network_page; 34 | } 35 | 36 | @Override 37 | public void onViewCreated(Bundle savedInstanceState) { 38 | mListView = (XListView) this.findViewById(R.id.list_view); 39 | mPageAdapter = new AlbumPageAdapter(this); 40 | mListView.setAdapter(mPageAdapter); 41 | } 42 | 43 | @Override 44 | public View getPageView() { 45 | return mListView; 46 | } 47 | 48 | @Override 49 | public void onPageConfig(PageConfig pageConfig) { 50 | super.onPageConfig(pageConfig); 51 | pageConfig.setPageSize(5); 52 | } 53 | 54 | @Override 55 | public ICall executePageRequest(int pageSize, int currentPage, Tracks mData) { 56 | return HttpAPIClient.getAPI().getAlbumInfo("夜曲", pageSize, currentPage); 57 | } 58 | 59 | @Override 60 | public IPageAdapter getPageAdapter() { 61 | return mPageAdapter; 62 | } 63 | 64 | @Override 65 | public IPageDataParser getPageDataParser() { 66 | return new IPageDataParser() { 67 | 68 | @Override 69 | public List getPageList(AlbumInfo data, boolean isFromCache) { 70 | return data.getTracks(); 71 | } 72 | 73 | @Override 74 | public long getPageTotal(AlbumInfo data, boolean isFromCache) { 75 | return data.getTotal_tracks(); 76 | } 77 | }; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/OkhttpPageActivity.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.view.View; 5 | import android.widget.ListView; 6 | 7 | import com.zhy.http.okhttp.OkHttpUtils; 8 | import com.zhy.http.okhttp.request.RequestCall; 9 | 10 | import cn.yhq.page.core.IPageAdapter; 11 | import cn.yhq.page.core.IPageDataParser; 12 | import cn.yhq.page.core.IPageRequester; 13 | import cn.yhq.page.sample.entity.AlbumInfo; 14 | import cn.yhq.page.sample.entity.Tracks; 15 | import cn.yhq.page.ui.PageConfig; 16 | import cn.yhq.page.ui.PageActivity; 17 | 18 | /** 19 | * Created by Yanghuiqiang on 2016/10/12. 20 | */ 21 | 22 | public class OkHttpPageActivity extends PageActivity { 23 | private ListView mListView; 24 | private AlbumPageAdapter mPageAdapter; 25 | 26 | @Override 27 | protected int getContentViewLayoutId() { 28 | return R.layout.activity_network_page; 29 | } 30 | 31 | @Override 32 | public void onViewCreated(Bundle savedInstanceState) { 33 | mListView = (ListView) this.findViewById(R.id.list_view); 34 | mPageAdapter = new AlbumPageAdapter(this); 35 | mListView.setAdapter(mPageAdapter); 36 | } 37 | 38 | @Override 39 | public View getPageView() { 40 | return mListView; 41 | } 42 | 43 | @Override 44 | public void onPageConfig(PageConfig pageConfig) { 45 | super.onPageConfig(pageConfig); 46 | pageConfig.setPageSize(5); 47 | } 48 | 49 | @Override 50 | public IPageAdapter getPageAdapter() { 51 | return mPageAdapter; 52 | } 53 | 54 | @Override 55 | public IPageRequester getPageRequester() { 56 | return new OkHttpPageRequester(this) { 57 | 58 | @Override 59 | public RequestCall getRequestCall(int pageSize, int pageIndex, Tracks data) { 60 | return OkHttpUtils.get() 61 | .url("http://v5.pc.duomi.com/search-ajaxsearch-searchall") 62 | .addParams("kw", "夜曲") 63 | .addParams("pz", String.valueOf(pageSize)) 64 | .addParams("pi", String.valueOf(pageIndex)) 65 | .build(); 66 | } 67 | }; 68 | } 69 | 70 | @Override 71 | public IPageDataParser getPageDataParser() { 72 | return new PageDataParser(); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/OkhttpPageRequester.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | import android.widget.Toast; 5 | 6 | import com.google.gson.Gson; 7 | import com.zhy.http.okhttp.callback.StringCallback; 8 | import com.zhy.http.okhttp.request.RequestCall; 9 | 10 | import java.lang.reflect.ParameterizedType; 11 | import java.lang.reflect.Type; 12 | 13 | import cn.yhq.page.core.Page; 14 | import cn.yhq.page.core.PageAction; 15 | import cn.yhq.page.core.PageRequester; 16 | import okhttp3.Call; 17 | 18 | /** 19 | * Created by Yanghuiqiang on 2016/10/12. 20 | */ 21 | 22 | public abstract class OkHttpPageRequester extends PageRequester { 23 | private RequestCall mRequestCall; 24 | 25 | public OkHttpPageRequester(Context context) { 26 | super(context); 27 | } 28 | 29 | public abstract RequestCall getRequestCall(int pageSize, int pageIndex, I data); 30 | 31 | @Override 32 | public void executeRequest(final Context context, PageAction pageAction, Page page) { 33 | mRequestCall = getRequestCall(page.getPageSize(), page.getCurrentPage(), page.getData()); 34 | mRequestCall 35 | .execute(new StringCallback() { 36 | 37 | @Override 38 | public void onError(Call call, Exception e, int id) { 39 | Toast.makeText(context, "数据请求失败,请稍后重试", Toast.LENGTH_LONG).show(); 40 | callException(e); 41 | } 42 | 43 | @Override 44 | public void onResponse(String response, int id) { 45 | Type type = ((ParameterizedType) OkHttpPageRequester.this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; 46 | T entity = new Gson().fromJson(response, type); 47 | callNetworkResponse(entity); 48 | } 49 | }); 50 | } 51 | 52 | @Override 53 | public void onCancel() { 54 | if (mRequestCall != null) { 55 | mRequestCall.cancel(); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/PageDataParser.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import cn.yhq.page.core.IPageDataParser; 7 | import cn.yhq.page.sample.entity.AlbumInfo; 8 | import cn.yhq.page.sample.entity.Tracks; 9 | 10 | /** 11 | * Created by Yanghuiqiang on 2016/10/18. 12 | */ 13 | 14 | public class PageDataParser implements IPageDataParser { 15 | 16 | @Override 17 | public List getPageList(AlbumInfo data, boolean isFromCache) { 18 | if (data == null) { 19 | return new ArrayList<>(); 20 | } 21 | return data.getTracks(); 22 | } 23 | 24 | @Override 25 | public long getPageTotal(AlbumInfo data, boolean isFromCache) { 26 | if (data == null) { 27 | return 0; 28 | } 29 | return data.getTotal_tracks(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/RecyclerPageActivity.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.widget.LinearLayoutManager; 5 | import android.view.View; 6 | import android.widget.EditText; 7 | 8 | import cn.yhq.adapter.recycler.OnRecyclerViewItemClickListener; 9 | import cn.yhq.http.core.ICall; 10 | import cn.yhq.page.core.IFilterName; 11 | import cn.yhq.page.core.IPageAdapter; 12 | import cn.yhq.page.core.IPageDataParser; 13 | import cn.yhq.page.http.RetrofitPageActivity; 14 | import cn.yhq.page.sample.entity.AlbumInfo; 15 | import cn.yhq.page.sample.entity.Tracks; 16 | import cn.yhq.page.ui.PageConfig; 17 | import cn.yhq.widget.xrecyclerview.XRecyclerListView; 18 | 19 | /** 20 | * Created by yanghuijuan on 2017/1/31. 21 | */ 22 | 23 | public class RecyclerPageActivity extends RetrofitPageActivity { 24 | private XRecyclerListView mListView; 25 | private AlbumRecyclerPageAdapter mPageAdapter; 26 | private EditText mEditText; 27 | 28 | @Override 29 | protected int getContentViewLayoutId() { 30 | return R.layout.activity_recycler; 31 | } 32 | 33 | @Override 34 | public void onViewCreated(Bundle savedInstanceState) { 35 | mListView = this.getView(R.id.list_view); 36 | mPageAdapter = new AlbumRecyclerPageAdapter(getContext()); 37 | mListView.setAdapter(mPageAdapter); 38 | mListView.setOnRecyclerViewItemClickListener(new OnRecyclerViewItemClickListener() { 39 | @Override 40 | public void onRecyclerViewItemClick(View itemView, int position) { 41 | showToast("哈哈" + position); 42 | 43 | } 44 | }); 45 | mListView.setLayoutManager(new LinearLayoutManager(this)); 46 | mEditText = this.getView(R.id.editText); 47 | this.attachSearchEditText(mEditText, new IFilterName() { 48 | @Override 49 | public String getFilterName(Tracks entity) { 50 | return entity.getTitle(); 51 | } 52 | }); 53 | } 54 | 55 | @Override 56 | public View getPageView() { 57 | return mListView; 58 | } 59 | 60 | @Override 61 | public void onPageConfig(PageConfig pageConfig) { 62 | super.onPageConfig(pageConfig); 63 | // 设置分页大小 64 | pageConfig.setPageSize(5); 65 | } 66 | 67 | @Override 68 | public ICall executePageRequest(int pageSize, int currentPage, Tracks mData) { 69 | return HttpAPIClient.getAPI().getAlbumInfo("夜曲", pageSize, currentPage); 70 | } 71 | 72 | @Override 73 | public IPageAdapter getPageAdapter() { 74 | return mPageAdapter; 75 | } 76 | 77 | @Override 78 | public IPageDataParser getPageDataParser() { 79 | return new PageDataParser(); 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/SimplePageActivity1.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | import cn.yhq.page.core.IPageDataIntercept; 9 | import cn.yhq.page.simple.SimpleListViewPageActivity; 10 | 11 | /** 12 | * Created by Yanghuiqiang on 2016/10/12. 13 | */ 14 | 15 | public class SimplePageActivity1 extends SimpleListViewPageActivity { 16 | 17 | @Override 18 | public void onViewCreated(Bundle savedInstanceState) { 19 | super.onViewCreated(savedInstanceState); 20 | this.setListAdapter(new SimplePageAdapter(this)); 21 | this.addPageDataIntercept(new IPageDataIntercept() { 22 | @Override 23 | public List intercept(Chain chain) throws Exception { 24 | List data = chain.data(); 25 | data.add(0, "拦截器增加的条目1"); 26 | return chain.handle(data); 27 | } 28 | }); 29 | this.addPageDataIntercept(new IPageDataIntercept() { 30 | @Override 31 | public List intercept(Chain chain) throws Exception { 32 | List data = chain.data(); 33 | data.add(0, "拦截器增加的条目2"); 34 | return chain.handle(data); 35 | } 36 | }); 37 | } 38 | 39 | // 如果是非耗时操作,则可以直接返回要适配的数据 40 | @Override 41 | public List getPageData() { 42 | List data = new ArrayList<>(); 43 | for (int i = 0; i < 10; i++) { 44 | data.add("条目" + i); 45 | } 46 | return data; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/SimplePageActivity3.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.view.View; 5 | import android.widget.ListView; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | import cn.yhq.page.core.IPageAdapter; 11 | import cn.yhq.page.core.IPageDataIntercept; 12 | import cn.yhq.page.simple.SimplePageActivity; 13 | 14 | /** 15 | * Created by Yanghuiqiang on 2016/10/12. 16 | */ 17 | 18 | public class SimplePageActivity3 extends SimplePageActivity { 19 | private ListView mListView; 20 | private SimplePageAdapter mPageAdapter; 21 | 22 | @Override 23 | protected int getContentViewLayoutId() { 24 | return R.layout.activity_main; 25 | } 26 | 27 | @Override 28 | public void onViewCreated(Bundle savedInstanceState) { 29 | mListView = (ListView) this.findViewById(R.id.list_view); 30 | mPageAdapter = new SimplePageAdapter(this); 31 | mListView.setAdapter(mPageAdapter); 32 | this.addPageDataIntercept(new IPageDataIntercept() { 33 | @Override 34 | public List intercept(Chain chain) throws Exception { 35 | List data = chain.data(); 36 | data.add(0, "拦截器增加的条目1"); 37 | return chain.handle(data); 38 | } 39 | }); 40 | this.addPageDataIntercept(new IPageDataIntercept() { 41 | @Override 42 | public List intercept(Chain chain) throws Exception { 43 | List data = chain.data(); 44 | data.add(0, "拦截器增加的条目2"); 45 | return chain.handle(data); 46 | } 47 | }); 48 | } 49 | 50 | @Override 51 | public View getPageView() { 52 | return mListView; 53 | } 54 | 55 | @Override 56 | public IPageAdapter getPageAdapter() { 57 | return mPageAdapter; 58 | } 59 | 60 | // 如果是非耗时操作,则可以直接返回要适配的数据 61 | @Override 62 | public List getPageData() { 63 | List data = new ArrayList<>(); 64 | for (int i = 0; i < 10; i++) { 65 | data.add("条目" + i); 66 | } 67 | return data; 68 | } 69 | 70 | 71 | } 72 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/SimplePageAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.content.Context; 4 | 5 | import cn.yhq.adapter.core.ViewHolder; 6 | import cn.yhq.adapter.list.ItemViewProvider2; 7 | import cn.yhq.page.adapter.PageListAdapter; 8 | 9 | /** 10 | * Created by Yanghuiqiang on 2016/10/12. 11 | */ 12 | 13 | public class SimplePageAdapter extends PageListAdapter { 14 | 15 | public SimplePageAdapter(Context context) { 16 | super(context); 17 | this.register(new ItemViewProvider2() { 18 | @Override 19 | public int getItemViewLayoutId() { 20 | return android.R.layout.simple_list_item_1; 21 | } 22 | 23 | @Override 24 | public void setupView(ViewHolder viewHolder, int position, String entity) { 25 | viewHolder.setText(android.R.id.text1, entity); 26 | } 27 | 28 | @Override 29 | public boolean isForProvider(int position, String entity) { 30 | return true; 31 | } 32 | }); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/SwipeRefreshLayoutPageActivity.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample; 2 | 3 | import android.os.Bundle; 4 | import android.view.View; 5 | 6 | import com.markmao.pulltorefresh.widget.XListView; 7 | 8 | import cn.yhq.http.core.ICall; 9 | import cn.yhq.page.core.IPageAdapter; 10 | import cn.yhq.page.core.IPageDataParser; 11 | import cn.yhq.page.http.RetrofitPageActivity; 12 | import cn.yhq.page.sample.entity.AlbumInfo; 13 | import cn.yhq.page.sample.entity.Tracks; 14 | import cn.yhq.page.ui.PageConfig; 15 | 16 | /** 17 | * Created by Yanghuiqiang on 2016/10/12. 18 | */ 19 | 20 | public class SwipeRefreshLayoutPageActivity extends RetrofitPageActivity { 21 | private XListView mListView; 22 | private AlbumPageAdapter mPageAdapter; 23 | 24 | @Override 25 | protected int getContentViewLayoutId() { 26 | return R.layout.activity_swipe_refresh; 27 | } 28 | 29 | @Override 30 | public void onViewCreated(Bundle savedInstanceState) { 31 | mListView = (XListView) this.findViewById(R.id.list_view); 32 | mPageAdapter = new AlbumPageAdapter(getContext()); 33 | mListView.setAdapter(mPageAdapter); 34 | } 35 | 36 | @Override 37 | public View getPageView() { 38 | return mListView; 39 | } 40 | 41 | @Override 42 | public void onPageConfig(PageConfig pageConfig) { 43 | super.onPageConfig(pageConfig); 44 | // 设置分页大小 45 | pageConfig.setPageSize(5); 46 | } 47 | 48 | @Override 49 | public ICall executePageRequest(int pageSize, int currentPage, Tracks mData) { 50 | return HttpAPIClient.getAPI().getAlbumInfo("夜曲", pageSize, currentPage); 51 | } 52 | 53 | @Override 54 | public IPageAdapter getPageAdapter() { 55 | return mPageAdapter; 56 | } 57 | 58 | @Override 59 | public IPageDataParser getPageDataParser() { 60 | return new PageDataParser(); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity/Album.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Album implements Serializable { 6 | private String cover; 7 | 8 | private int id; 9 | 10 | private String name; 11 | 12 | public void setCover(String cover){ 13 | this.cover = cover; 14 | } 15 | public String getCover(){ 16 | return this.cover; 17 | } 18 | public void setId(int id){ 19 | this.id = id; 20 | } 21 | public int getId(){ 22 | return this.id; 23 | } 24 | public void setName(String name){ 25 | this.name = name; 26 | } 27 | public String getName(){ 28 | return this.name; 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity/AlbumInfo.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity; 2 | import java.io.Serializable; 3 | import java.util.List; 4 | 5 | public class AlbumInfo implements Serializable { 6 | private int album_offset; 7 | 8 | private List albums ; 9 | 10 | private int artist_offset; 11 | 12 | private List artists ; 13 | 14 | private int dm_error; 15 | 16 | private String error_msg; 17 | 18 | private int recommend; 19 | 20 | private int total_albums; 21 | 22 | private int total_artists; 23 | 24 | private int total_tracks; 25 | 26 | private int track_offset; 27 | 28 | private List tracks ; 29 | 30 | public void setAlbum_offset(int album_offset){ 31 | this.album_offset = album_offset; 32 | } 33 | public int getAlbum_offset(){ 34 | return this.album_offset; 35 | } 36 | public void setAlbums(List albums){ 37 | this.albums = albums; 38 | } 39 | public List getAlbums(){ 40 | return this.albums; 41 | } 42 | public void setArtist_offset(int artist_offset){ 43 | this.artist_offset = artist_offset; 44 | } 45 | public int getArtist_offset(){ 46 | return this.artist_offset; 47 | } 48 | public void setArtists(List artists){ 49 | this.artists = artists; 50 | } 51 | public List getArtists(){ 52 | return this.artists; 53 | } 54 | public void setDm_error(int dm_error){ 55 | this.dm_error = dm_error; 56 | } 57 | public int getDm_error(){ 58 | return this.dm_error; 59 | } 60 | public void setError_msg(String error_msg){ 61 | this.error_msg = error_msg; 62 | } 63 | public String getError_msg(){ 64 | return this.error_msg; 65 | } 66 | public void setRecommend(int recommend){ 67 | this.recommend = recommend; 68 | } 69 | public int getRecommend(){ 70 | return this.recommend; 71 | } 72 | public void setTotal_albums(int total_albums){ 73 | this.total_albums = total_albums; 74 | } 75 | public int getTotal_albums(){ 76 | return this.total_albums; 77 | } 78 | public void setTotal_artists(int total_artists){ 79 | this.total_artists = total_artists; 80 | } 81 | public int getTotal_artists(){ 82 | return this.total_artists; 83 | } 84 | public void setTotal_tracks(int total_tracks){ 85 | this.total_tracks = total_tracks; 86 | } 87 | public int getTotal_tracks(){ 88 | return this.total_tracks; 89 | } 90 | public void setTrack_offset(int track_offset){ 91 | this.track_offset = track_offset; 92 | } 93 | public int getTrack_offset(){ 94 | return this.track_offset; 95 | } 96 | public void setTracks(List tracks){ 97 | this.tracks = tracks; 98 | } 99 | public List getTracks(){ 100 | return this.tracks; 101 | } 102 | 103 | } -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity/Albums.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity; 2 | import java.io.Serializable; 3 | import java.util.List; 4 | public class Albums implements Serializable { 5 | private List artists ; 6 | 7 | private boolean available; 8 | 9 | private String company; 10 | 11 | private String cover; 12 | 13 | private int id; 14 | 15 | private String name; 16 | 17 | private int num_tracks; 18 | 19 | private String release_date; 20 | 21 | private String type; 22 | 23 | public void setArtists(List artists){ 24 | this.artists = artists; 25 | } 26 | public List getArtists(){ 27 | return this.artists; 28 | } 29 | public void setAvailable(boolean available){ 30 | this.available = available; 31 | } 32 | public boolean getAvailable(){ 33 | return this.available; 34 | } 35 | public void setCompany(String company){ 36 | this.company = company; 37 | } 38 | public String getCompany(){ 39 | return this.company; 40 | } 41 | public void setCover(String cover){ 42 | this.cover = cover; 43 | } 44 | public String getCover(){ 45 | return this.cover; 46 | } 47 | public void setId(int id){ 48 | this.id = id; 49 | } 50 | public int getId(){ 51 | return this.id; 52 | } 53 | public void setName(String name){ 54 | this.name = name; 55 | } 56 | public String getName(){ 57 | return this.name; 58 | } 59 | public void setNum_tracks(int num_tracks){ 60 | this.num_tracks = num_tracks; 61 | } 62 | public int getNum_tracks(){ 63 | return this.num_tracks; 64 | } 65 | public void setRelease_date(String release_date){ 66 | this.release_date = release_date; 67 | } 68 | public String getRelease_date(){ 69 | return this.release_date; 70 | } 71 | public void setType(String type){ 72 | this.type = type; 73 | } 74 | public String getType(){ 75 | return this.type; 76 | } 77 | 78 | } -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity/Artists.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Artists implements Serializable { 6 | private int id; 7 | 8 | private String name; 9 | 10 | private int num_albums; 11 | 12 | private int num_tracks; 13 | 14 | private String portrait; 15 | 16 | private boolean valid; 17 | 18 | public void setId(int id){ 19 | this.id = id; 20 | } 21 | public int getId(){ 22 | return this.id; 23 | } 24 | public void setName(String name){ 25 | this.name = name; 26 | } 27 | public String getName(){ 28 | return this.name; 29 | } 30 | public void setNum_albums(int num_albums){ 31 | this.num_albums = num_albums; 32 | } 33 | public int getNum_albums(){ 34 | return this.num_albums; 35 | } 36 | public void setNum_tracks(int num_tracks){ 37 | this.num_tracks = num_tracks; 38 | } 39 | public int getNum_tracks(){ 40 | return this.num_tracks; 41 | } 42 | public void setPortrait(String portrait){ 43 | this.portrait = portrait; 44 | } 45 | public String getPortrait(){ 46 | return this.portrait; 47 | } 48 | public void setValid(boolean valid){ 49 | this.valid = valid; 50 | } 51 | public boolean getValid(){ 52 | return this.valid; 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity/Medias.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Medias implements Serializable { 6 | private int bitrate; 7 | 8 | private String p2purl; 9 | 10 | public void setBitrate(int bitrate){ 11 | this.bitrate = bitrate; 12 | } 13 | public int getBitrate(){ 14 | return this.bitrate; 15 | } 16 | public void setP2purl(String p2purl){ 17 | this.p2purl = p2purl; 18 | } 19 | public String getP2purl(){ 20 | return this.p2purl; 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity/Tracks.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity; 2 | import java.io.Serializable; 3 | import java.util.List; 4 | public class Tracks implements Serializable { 5 | private Album album; 6 | 7 | private List artists ; 8 | 9 | private String availability; 10 | 11 | private String dlyric; 12 | 13 | private int id; 14 | 15 | private List medias ; 16 | 17 | private int mv; 18 | 19 | private String slyric; 20 | 21 | private String title; 22 | 23 | private String isdown; 24 | 25 | private String isplay; 26 | 27 | public void setAlbum(Album album){ 28 | this.album = album; 29 | } 30 | public Album getAlbum(){ 31 | return this.album; 32 | } 33 | public void setArtists(List artists){ 34 | this.artists = artists; 35 | } 36 | public List getArtists(){ 37 | return this.artists; 38 | } 39 | public void setAvailability(String availability){ 40 | this.availability = availability; 41 | } 42 | public String getAvailability(){ 43 | return this.availability; 44 | } 45 | public void setDlyric(String dlyric){ 46 | this.dlyric = dlyric; 47 | } 48 | public String getDlyric(){ 49 | return this.dlyric; 50 | } 51 | public void setId(int id){ 52 | this.id = id; 53 | } 54 | public int getId(){ 55 | return this.id; 56 | } 57 | public void setMedias(List medias){ 58 | this.medias = medias; 59 | } 60 | public List getMedias(){ 61 | return this.medias; 62 | } 63 | public void setMv(int mv){ 64 | this.mv = mv; 65 | } 66 | public int getMv(){ 67 | return this.mv; 68 | } 69 | public void setSlyric(String slyric){ 70 | this.slyric = slyric; 71 | } 72 | public String getSlyric(){ 73 | return this.slyric; 74 | } 75 | public void setTitle(String title){ 76 | this.title = title; 77 | } 78 | public String getTitle(){ 79 | return this.title; 80 | } 81 | public void setIsdown(String isdown){ 82 | this.isdown = isdown; 83 | } 84 | public String getIsdown(){ 85 | return this.isdown; 86 | } 87 | public void setIsplay(String isplay){ 88 | this.isplay = isplay; 89 | } 90 | public String getIsplay(){ 91 | return this.isplay; 92 | } 93 | 94 | } -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity1/Data.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity1; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Data implements Serializable { 6 | private String activityFlag; 7 | 8 | private int actualAmount; 9 | 10 | private int amount; 11 | 12 | private String expectProfitRate; 13 | 14 | private String extraProfitRate; 15 | 16 | private int maxAmount; 17 | 18 | private int minAmount; 19 | 20 | private String onlineTime; 21 | 22 | private int period; 23 | 24 | private int periodType; 25 | 26 | private String process; 27 | 28 | private String productCode; 29 | 30 | private int productId; 31 | 32 | private String productName; 33 | 34 | private int productStatus; 35 | 36 | private int profitType; 37 | 38 | private String recommendFlag; 39 | 40 | private String returnType; 41 | 42 | private int totalInvestAmount; 43 | 44 | private String visibleTerminal; 45 | 46 | public void setActivityFlag(String activityFlag){ 47 | this.activityFlag = activityFlag; 48 | } 49 | public String getActivityFlag(){ 50 | return this.activityFlag; 51 | } 52 | public void setActualAmount(int actualAmount){ 53 | this.actualAmount = actualAmount; 54 | } 55 | public int getActualAmount(){ 56 | return this.actualAmount; 57 | } 58 | public void setAmount(int amount){ 59 | this.amount = amount; 60 | } 61 | public int getAmount(){ 62 | return this.amount; 63 | } 64 | public void setExpectProfitRate(String expectProfitRate){ 65 | this.expectProfitRate = expectProfitRate; 66 | } 67 | public String getExpectProfitRate(){ 68 | return this.expectProfitRate; 69 | } 70 | public void setExtraProfitRate(String extraProfitRate){ 71 | this.extraProfitRate = extraProfitRate; 72 | } 73 | public String getExtraProfitRate(){ 74 | return this.extraProfitRate; 75 | } 76 | public void setMaxAmount(int maxAmount){ 77 | this.maxAmount = maxAmount; 78 | } 79 | public int getMaxAmount(){ 80 | return this.maxAmount; 81 | } 82 | public void setMinAmount(int minAmount){ 83 | this.minAmount = minAmount; 84 | } 85 | public int getMinAmount(){ 86 | return this.minAmount; 87 | } 88 | public void setOnlineTime(String onlineTime){ 89 | this.onlineTime = onlineTime; 90 | } 91 | public String getOnlineTime(){ 92 | return this.onlineTime; 93 | } 94 | public void setPeriod(int period){ 95 | this.period = period; 96 | } 97 | public int getPeriod(){ 98 | return this.period; 99 | } 100 | public void setPeriodType(int periodType){ 101 | this.periodType = periodType; 102 | } 103 | public int getPeriodType(){ 104 | return this.periodType; 105 | } 106 | public void setProcess(String process){ 107 | this.process = process; 108 | } 109 | public String getProcess(){ 110 | return this.process; 111 | } 112 | public void setProductCode(String productCode){ 113 | this.productCode = productCode; 114 | } 115 | public String getProductCode(){ 116 | return this.productCode; 117 | } 118 | public void setProductId(int productId){ 119 | this.productId = productId; 120 | } 121 | public int getProductId(){ 122 | return this.productId; 123 | } 124 | public void setProductName(String productName){ 125 | this.productName = productName; 126 | } 127 | public String getProductName(){ 128 | return this.productName; 129 | } 130 | public void setProductStatus(int productStatus){ 131 | this.productStatus = productStatus; 132 | } 133 | public int getProductStatus(){ 134 | return this.productStatus; 135 | } 136 | public void setProfitType(int profitType){ 137 | this.profitType = profitType; 138 | } 139 | public int getProfitType(){ 140 | return this.profitType; 141 | } 142 | public void setRecommendFlag(String recommendFlag){ 143 | this.recommendFlag = recommendFlag; 144 | } 145 | public String getRecommendFlag(){ 146 | return this.recommendFlag; 147 | } 148 | public void setReturnType(String returnType){ 149 | this.returnType = returnType; 150 | } 151 | public String getReturnType(){ 152 | return this.returnType; 153 | } 154 | public void setTotalInvestAmount(int totalInvestAmount){ 155 | this.totalInvestAmount = totalInvestAmount; 156 | } 157 | public int getTotalInvestAmount(){ 158 | return this.totalInvestAmount; 159 | } 160 | public void setVisibleTerminal(String visibleTerminal){ 161 | this.visibleTerminal = visibleTerminal; 162 | } 163 | public String getVisibleTerminal(){ 164 | return this.visibleTerminal; 165 | } 166 | 167 | } -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity1/ParentData.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity1; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Yanghuiqiang on 2016/12/1. 8 | */ 9 | 10 | public class ParentData implements Serializable { 11 | private List childDatas; 12 | private String title; 13 | private int icon; 14 | 15 | public List getChildDatas() { 16 | return childDatas; 17 | } 18 | 19 | public void setChildDatas(List childDatas) { 20 | this.childDatas = childDatas; 21 | } 22 | 23 | public String getTitle() { 24 | return title; 25 | } 26 | 27 | public void setTitle(String title) { 28 | this.title = title; 29 | } 30 | 31 | public int getIcon() { 32 | return icon; 33 | } 34 | 35 | public void setIcon(int icon) { 36 | this.icon = icon; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/cn/yhq/page/sample/entity1/Response.java: -------------------------------------------------------------------------------- 1 | package cn.yhq.page.sample.entity1; 2 | import java.io.Serializable; 3 | import java.util.List; 4 | public class Response implements Serializable { 5 | private String appName; 6 | 7 | private String bizType; 8 | 9 | private String customerId; 10 | 11 | private List data ; 12 | 13 | private String deviceId; 14 | 15 | private String responseCode; 16 | 17 | private String responseTime; 18 | 19 | public void setAppName(String appName){ 20 | this.appName = appName; 21 | } 22 | public String getAppName(){ 23 | return this.appName; 24 | } 25 | public void setBizType(String bizType){ 26 | this.bizType = bizType; 27 | } 28 | public String getBizType(){ 29 | return this.bizType; 30 | } 31 | public void setCustomerId(String customerId){ 32 | this.customerId = customerId; 33 | } 34 | public String getCustomerId(){ 35 | return this.customerId; 36 | } 37 | public void setData(List data){ 38 | this.data = data; 39 | } 40 | public List getData(){ 41 | return this.data; 42 | } 43 | public void setDeviceId(String deviceId){ 44 | this.deviceId = deviceId; 45 | } 46 | public String getDeviceId(){ 47 | return this.deviceId; 48 | } 49 | public void setResponseCode(String responseCode){ 50 | this.responseCode = responseCode; 51 | } 52 | public String getResponseCode(){ 53 | return this.responseCode; 54 | } 55 | public void setResponseTime(String responseTime){ 56 | this.responseTime = responseTime; 57 | } 58 | public String getResponseTime(){ 59 | return this.responseTime; 60 | } 61 | 62 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_auto_refresh.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_chooser.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 |