Android專案okhttp請求+RecyclerView展示
準備階段:
1.網路請求使用okhttp:
compile'xyz.reginer.http:httplib:1.0.4'
2.介面展示使用RecyclerView:
compile 'xyz.reginer.baseadapter:baseadapter:1.1.2'
compile 'com.android.support:recyclerview-v7:25.0.0'
3.資料傳遞使用EventBus:
compile 'org.greenrobot:eventbus:3.0.0'
4.解析json使用Gson:
compile 'com.google.code.gson:gson:2.8.0'
5.圖片展示使用Glide:
compile 'com.github.bumptech.glide:glide:3.7.0'
開始擼程式碼:
1.使用RHttp請求網路資料並使用Gson解析同時使用EventBus傳遞資料:
public static void getJson() {
RHttp.get().url("http://www.reginer.xyz/json/").build().execute(new BaseCallBack<Content>(Content.class) {
@Override
public void onError(Call call, Exception e, int id) {
}
@Override
public void onResponse(Content response, int id) {
EventBus.getDefault().post(response);
}
});
}
如若攜帶引數可.params()或者.addParams()新增。
2.在BaseCallBack中解析json:
public abstract class BaseCallBack<T> extends Callback<T> {
private Class<T> clazz;
protected BaseCallBack(Class<T> clazz) {
this.clazz = clazz;
}
@Override
public T parseNetworkResponse(Response response, int id) throws Exception {
String string = response.body().string();
return json2Bean(string, clazz);
}
/**
* 將json對映成bean物件
*
* @param result
* json字串
* @param clazz
* bean物件位元組碼
*/
private static <T> T json2Bean(String result, Class<T> clazz) {
if (TextUtils.isEmpty(result))
return null;
Gson gs = new Gson();
return gs.fromJson(result, clazz);
}
}
3.建立adapter繼承自CommonRvAdapter。
public class ContentAdapter extends CommonRvAdapter<Content.ItemBean>{
public ContentAdapter(Context context, int layoutResId, List<Content.ItemBean> data) {
super(context, layoutResId, data);
}
@Override
public void convert(BaseAdapterHelper helper, Content.ItemBean item, int position) {
}
}
如若根據item的不同型別顯示不同佈局,可重寫getLayoutResId方法:
@Override
public int getLayoutResId(Content.ItemBean item, int position) {
switch (item.getType()) {
case 1:
return R.layout.view_type1_layout;
case 2:
return R.layout.view_type2_layout;
}
return 0;
}
在convert方法中設定控制元件內容:
@Override
public void convert(BaseAdapterHelper helper, Content.ItemBean item, int position) {
switch (item.getType()) {
case 1:
Glide.with(helper.getView().getContext()).load(item.getImage()).
centerCrop().crossFade().into((ImageView) helper.getView(R.id.iv_content));
helper.setText(R.id.tv_content, item.getName());
break;
case 2:
helper.setText(R.id.tv_content, item.getName());
helper.setText(R.id.tv_description, item.getDescription());
break;
}
}
4.在activity中初始化控制元件:
private void initView() {
mList = new ArrayList<>();
mAdapter = new ContentAdapter(this,-1,mList);
RecyclerView mRvContent = (RecyclerView) findViewById(R.id.rv_content);
mRvContent.setLayoutManager(new LinearLayoutManager(this));
//設定分割線
mRvContent.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
mRvContent.setAdapter(mAdapter);
}
註冊EventBus:
在onCreate中
EventBus.getDefault().register(this);
在onDestroy中
EventBus.getDefault().unregister(this);
或者在onStart(),onStop()中。
獲取EventBus返回值,重新整理Adapter:
@Subscribe(threadMode = ThreadMode.MAIN)
public void getContent(Content content) {
if (content.getCode()==200){
mList.addAll(content.getItem());
mAdapter.notifyDataSetChanged();
}
}
開始請求資料:
NetManager.getJson();
效果圖:
新增item點選事件:
mAdapter.setOnItemClickListener(this);
@Override
public void onItemClick(RecyclerView.ViewHolder viewHolder, View view, int position) {
Toast.makeText(this,"position is::"+position,Toast.LENGTH_SHORT).show();
}
新增item子項控制元件點選事件:
在Adapter的convert方法內新增:
setOnItemChildClickListener(helper,position,R.id.iv_content,R.id.tv_content);
Activity中新增:
mAdapter.setOnItemChildClickListener(this);
@Override
public void onChildClick(View v, int position) {
switch (v.getId()) {
case R.id.iv_content:
Toast.makeText(this,"picture position is::"+position,Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(this,"child position is::"+position,Toast.LENGTH_SHORT).show();
break;
}
}
原始碼在這裡
————————完結——————————
相關推薦
Android專案okhttp請求+RecyclerView展示
準備階段: 1.網路請求使用okhttp: compile'xyz.reginer.http:httplib:1.0.4' 2.介面展示使用RecyclerView: compile 'xyz.reginer.baseadapter:basead
Okhttp網路請求+Recyclerview展示資料
首先匯入依賴 //Recyclerview是listview的升級版 implementation 'com.android.support:recyclerview-v7:28.0.0' //okhttp impleme
Android下OkHttp請求自定義HTTPS證書介面設定
在請求安全性高的介面時,我們可能會使用到HTTPS介面,HTTPS可以理解為HTTP+TLS,關於HTTPS具體是怎麼工作的,可以看這篇文章:http://gold.xitu.io/entry/56ef
MVP框架搭建OkHttp做網路請求RecyClerView做列表展示頁面
首先匯入build.gradle中需要用到的依賴 implementation ‘com.google.code.gson:gson:2.8.5’ compile ‘com.android.support:recyclerview-v7:27.1.1’ compile ‘com.squa
Android Studio OkHttp+RecyclerView多條目展示資料
Android Studio OkHttp+RecyclerView多條目展示資料 使用到了Gson-2.3.1 okhttp:3.9.0 recyclerview-v7:26.1.0 匯入依賴 compile 'com.android.support:recycle
OkHttp網路載入資料+RecyclerView展示+屬性動畫
MainActivity.java public class MainActivity extends AppCompatActivity implements HttpUrls.ff{ private ImageView mImageView; private Rec
友盟登陸傳值+OkHttp+recyclerview展示瀑布流+跳轉Intent傳值+屬性動畫
友盟詳情見 https://blog.csdn.net/aijaijgnaw/article/details/84203936 分包 友盟第三方登入 MyApp(Application) package com.umeng.soexample.app; import and
Android OKhttp請求遇到的問題
剛開始學習Android網路請求記錄一下 OKhttp提示錯誤android.os.NetworkOnMainThreadException看意思就是不能再主執行緒中寫。 提示not permitted by network security poliy 看意思跟iOS裡面
Android OKhttp請求遇到的問題
剛開始學習Android網路請求記錄一下 OKhttp提示錯誤android.os.NetworkOnMainThreadException看意思就是不能再主執行緒中寫。 提示not permitted by network security poliy 看意
主流mwp框架+OKHttp網路請求xRecycleView展示
MainActivity package com.zjh.administrat.recyclerviewdemo3.view; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; imp
Android瀑布流優化,解決Recyclerview展示大批量圖片時Item自動切換、閃爍、空白等問題
本文涉及的程式碼案例可以在下方的連結中找到,如果對你有幫助,請給個Star(#^.^#)問題分析 這段時間業務需求用到RecyclerView瀑布流載入並展示大批量圖片,但一開始單純使用RecyclerView直接載入圖片,使得顯示上出現了滑動到頂端時閃爍,It
android,retrofit,okhttp,日誌攔截器,使用攔截器Interceptor統一列印請求與響應的json
可以打印出傳遞的引數以及返回的結果 : 最下面有完整的 retrofit 案例 ------------------retrofit的使用----START-------------------------- 首先 : 依賴 : compile 'com.squ
構建Android專案之RxAndroid+Retrofit網路請求
注意 Retrofit 2.0+和Retrofit 2.0之前的版本語法上有差別,本文基於Retrofit2.1.0 什麼是Retrofit? retrofit是一款針對Android網路請求的開源框架,它與okhttp一樣出自Square公司。Rotrofit2.0的
android中Okhttp框架進行網路請求的工具類()
package com.example.utils; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterat
Android瀑布流優化,解決Recyclerview展示大批量圖片時Item自動切換、閃爍、空白等問題...
code小生,一個專注於 Android 領域的技術分享平臺作者:請抱抱陳先生地址:https:
android 中okhttp post請求傳遞json資料
public final static int CONNECT_TIMEOUT = 60; public final static int READ_TIMEOUT = 100;
Android——使用OkHttp(含各種請求方法)
支援 SPDY ,共享同一個 Socket 來處理同一個伺服器的所有請求 1、如果 SPDY 不可用,則通過連線池來減少請求延時 2、無縫的支援GZIP來減少資料流量 3、快取響應資料來減少重複的網路請求 OkHttp 處理了很多網路疑難雜症:會從很多常
Android 的OkHttp 網路請求框架的學習封裝
自述:在此以前,自己從來沒有寫過部落格,今天是第一次寫,真心是有點小激動,正要下筆卻不知道應該從何說起,若是寫的不好,請各位見諒吧!關於網路請求,我自認為自己是一個菜鳥,沒有任何經驗,之前做的專案都是別人封裝好,告訴我怎麼呼叫就好了。至於怎麼封裝邏輯的,真是一竅不通,可近來
Android MVP,OkHttp,ImageLoader/Glide,介面回撥,RecyclerView,屬性動畫,自定義View/ViewGroup,Sqlite
(一) 業務需求描述1. 完成如下三色梯頁面效果1)自定義ViewGroup的方式完成如圖一三色梯頁面效果,第一條紅色,第二條綠色,第三條藍色,依次迴圈,臺階上顯示第幾條臺階數,每臺階梯子佔控制元件寬度的1/3,垂直方向依次向下新增2)為自定義三色梯提供新增和
Android常用網路請求框架xUtils、OkHttp、Volley、Retorfit對比
網路請求框架總結1.xutils 此框架龐大而周全,這個框架可以網路請求,同時可以圖片載入,又可以資料儲存,又可以 View 註解,使用這種框架很方便,這樣會使得你整個專案對它依賴性太強,萬一以後這個庫不維護了,或者中間某個模組出問題了,這個影響非常大,所以在專案開發時,一般會更喜歡選擇專注某一領域