Android RecyclerView数据展示
生活随笔
收集整理的這篇文章主要介紹了
Android RecyclerView数据展示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
做項目涉及到聯網肯定是需要展示網絡數據的,RecyclerView+Okhttp展示網絡數據雖然很基礎很簡單,但想想還是寫出來讓初學者了解一下?
### api ConstantApi 是一級接口
public class ConstantApi {//bannerpublic static String URL_BANNER = "https://www.zhaoapi.cn/";//設計師public static String URL_SHEJISHI = "https://app.tuozhe8.com/api.php/api/";?### ApiService? 是以一個GET/POST注解的二級接口以及方法
public interface ApiService {//banner@GET("quarter/getAd")Flowable<BannerBean> getBanner();//設計師@GET("Lists/designer?token=&version=1.7")Flowable<SheJIShiBean> getShejishi();//列表@GET("product/getCatagory")Flowable<LieBiaoBean> getLieBiao();//show展示@GET("product/getProducts?pscid=1")Flowable<ShowsBean> getShows(); }?### inien OnDataListener 是創建一個監聽式的方法
public interface OnDataListener {//bannervoid onBannerData(BannerBean bannerBean);//設計師void onSheJishiData(SheJIShiBean sheJIShiBean);//列表void onLieBiaoData(LieBiaoBean lieBiaoBean); }### IMolder
public interface IMolder {//bannervoid getDataBanner(OnDataListener listener);//設計師void getDataShejishi(OnDataListener listener);//列表void getDataLieBiao(OnDataListener listener); }### MyMolder
public class MyMolder implements IMolder{/* 1. Banner 輪播圖* 首頁廣告(輪播圖+京東秒殺+最底部的為你推薦)* https://www.zhaoapi.cn/ad/getAd* */@Overridepublic void getDataBanner(final OnDataListener listener) {//創建日志攔截器HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {@Overridepublic void log(String message) {Log.i("TAG","日志信息" + message);}});interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).connectTimeout(5000, TimeUnit.SECONDS).writeTimeout(5000, TimeUnit.SECONDS).readTimeout(5000, TimeUnit.SECONDS).build();Retrofit retrofit = new Retrofit.Builder().baseUrl(ConstantApi.URL_BANNER).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).client(client).build();//得到代理對象ApiService apiService = retrofit.create(ApiService.class);Flowable<BannerBean> banner = apiService.getBanner();banner.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new DisposableSubscriber<BannerBean>() {@Overridepublic void onNext(BannerBean bannerBean) {Log.i("TAG","成功");if (listener != null){listener.onBannerData(bannerBean);}}@Overridepublic void onError(Throwable t) {Log.i("TAG", t.getMessage());}@Overridepublic void onComplete() {}});}?### IPresenter
public interface IPresenter {//bannervoid getBannerP();//設計師void getSheJishiP();//列表void getLieBiaoP(); }?### MyPresenter
public class MyPresenter implements IPresenter,OnDataListener{//注入M層MyMolder myMolder;//注入V層BaseView baseView;public MyPresenter(MainActivity activity) {//多態 初始化m 父類引用指向子類實現this.myMolder = new MyMolder();//賦值baseView = activity;}/** Banner輪播圖* */@Overridepublic void onBannerData(BannerBean bannerBean) {baseView.showBannerData(bannerBean.data);}/*** 設計師* @param sheJIShiBean*/@Overridepublic void onSheJishiData(SheJIShiBean sheJIShiBean) {baseView.showSheJiShiData(sheJIShiBean.data.display);}/*** 列表* @param lieBiaoBean*/@Overridepublic void onLieBiaoData(LieBiaoBean lieBiaoBean) {baseView.showLieBiaoData(lieBiaoBean.data);}/** Banner輪播圖* */@Overridepublic void getBannerP() {//調用獲取網絡數據的方法myMolder.getDataBanner(this);}/*** 設計師*/@Overridepublic void getSheJishiP() {myMolder.getDataShejishi(this);}/*** 列表*/@Overridepublic void getLieBiaoP() {myMolder.getDataLieBiao(this);}}?### IView
public interface IView<T> {void setP(T P); }?### MyView 接口
public interface BaseView extends IView<MyPresenter>{//bannervoid showBannerData(List<BannerBean.DataBean> bannerBeans);//設計師void showSheJiShiData(List<SheJIShiBean.DataBean.DisplayBean> shejishiBeans);//列表void showLieBiaoData(List<LieBiaoBean.DataBean> lieBiaos); }?### adapter 適配器
public class LieBiaoAdapter extends RecyclerView.Adapter<LieBiaoHolder>{List<LieBiaoBean.DataBean> list;public LieBiaoAdapter(List<LieBiaoBean.DataBean> list) {this.list = list;}@NonNull@Overridepublic LieBiaoHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {return new LieBiaoHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.liebiao_item,viewGroup,false));}@Overridepublic void onBindViewHolder(@NonNull LieBiaoHolder lieBiaoHolder, int i) {LieBiaoBean.DataBean dataBean = list.get(i);String icon = dataBean.icon;Uri uri = Uri.parse(icon);lieBiaoHolder.liebiao_sdv.setImageURI(uri);lieBiaoHolder.liebiao_name.setText(dataBean.name);lieBiaoHolder.liebiao_item.setText(dataBean.createtime);lieBiaoHolder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {clickListener.onclick();}});}@Overridepublic int getItemCount() {return list.size();}ClickListener clickListener;public void setListener(ClickListener clickListener){this.clickListener = clickListener;}public interface ClickListener{void onclick();} }?### MainActivity
public class MainActivity extends AppCompatActivity implements BaseView {@BindView(R.id.main_banner)Banner mainBanner;@BindView(R.id.main_recyclerview01)RecyclerView mainRecyclerview01;@BindView(R.id.main_recyclerview02)RecyclerView mainRecyclerview02;//注入P層MyPresenter presenter;//banner list集合List<String> imgs = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);/*** P 層數據*/presenter = new MyPresenter(this);presenter.getBannerP();presenter.getSheJishiP();presenter.getLieBiaoP();}/** 輪播圖* */@Overridepublic void showBannerData(final List<BannerBean.DataBean> bannerBeans) {for (int i = 0; i<bannerBeans.size(); i++){String icon = bannerBeans.get(i).icon;imgs.add(icon);Log.i("TAG",icon);//添加本地mipmap下的圖片;mainBanner.setImageLoader(new ImageLoader() {@Overridepublic void displayImage(Context context, Object path, ImageView imageView) {Glide.with(context).load((String)path).into(imageView);}});mainBanner.setImages(imgs);mainBanner.start();//跳轉到WebView頁面mainBanner.setOnBannerListener(new OnBannerListener() {@Overridepublic void OnBannerClick(int position) {String url = bannerBeans.get(position).url;Intent intent = new Intent(MainActivity.this,WebActivity.class);intent.putExtra("url",url);startActivity(intent);}});}}/*** 設計師* @param shejishiBeans*/@Overridepublic void showSheJiShiData(List<SheJIShiBean.DataBean.DisplayBean> shejishiBeans) {//設置布局mainRecyclerview01.setLayoutManager(new LinearLayoutManager(this, OrientationHelper.HORIZONTAL,false));//創建適配器SheJishiAdapter jishiAdapter = new SheJishiAdapter(shejishiBeans);mainRecyclerview01.setAdapter(jishiAdapter);}/*** 列表* @param lieBiaos*/@Overridepublic void showLieBiaoData(List<LieBiaoBean.DataBean> lieBiaos) {//設置布局mainRecyclerview02.setLayoutManager(new LinearLayoutManager(this));//創建適配器LieBiaoAdapter lieBiaoAdapter = new LieBiaoAdapter(lieBiaos);mainRecyclerview02.setAdapter(lieBiaoAdapter);//監聽跳轉lieBiaoAdapter.setListener(new LieBiaoAdapter.ClickListener() {@Overridepublic void onclick() {Intent intent = new Intent(MainActivity.this,ShowActivity.class);startActivity(intent);}});}@Overridepublic void setP(MyPresenter P) {this.presenter = P;}}### WebActivity
public class WebActivity extends AppCompatActivity {private WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_web);webView = findViewById(R.id.web_web);String url = getIntent().getExtras().getString("url");webView.loadUrl(url);} }完事,明白里面的過程其實很簡單的,希望對有的人有所幫助
最后附上源碼
http://download.csdn.net/detail/lanrenxiaowen/9852141
?
總結
以上是生活随笔為你收集整理的Android RecyclerView数据展示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荐书 | 《大脑的奥秘:人人要懂的脑科学
- 下一篇: 地表最强22个互联网定律和原则:炒作周期