欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:android RxJava

柚子快報(bào)邀請(qǐng)碼778899分享:android RxJava

http://yzkb.51969.com/

目錄

1 RxJAVA簡(jiǎn)介

1 什么是RxJava

2.RxJava好在哪

3.什么是觀察者模式?

4.RxJava原理理解

5.實(shí)例

2.Retrofit+OkHTTP+RxJava+RecycleView的實(shí)現(xiàn)步驟

第一步:創(chuàng)建項(xiàng)目

第二步:導(dǎo)入依賴

第三步:添加網(wǎng)絡(luò)權(quán)限

第四步:在activity_main.xml添加Recycle,并給其設(shè)置id

第五步:創(chuàng)建子布局

第六步:創(chuàng)建實(shí)體類

第七步:創(chuàng)建適配器

第八步:設(shè)置適配器

第九步:進(jìn)行網(wǎng)絡(luò)請(qǐng)求

1 RxJAVA簡(jiǎn)介

1 什么是RxJava

????????我對(duì)它的定義是:RxJava

本質(zhì)上是一個(gè)異步操作庫(kù),是一個(gè)能讓你用極其簡(jiǎn)潔的邏輯去處理繁瑣復(fù)雜任務(wù)的異步事件庫(kù)。

2.RxJava好在哪

????????Android平臺(tái)上為已經(jīng)開(kāi)發(fā)者提供了

AsyncTask,Handler

等用來(lái)做異步操作的類庫(kù),那我們?yōu)槭裁催€要選 擇RxJava

呢?答案是簡(jiǎn)潔!

RxJava

可以用非常簡(jiǎn)潔的代碼邏輯來(lái)解決復(fù)雜問(wèn)題;而且即使業(yè)務(wù)邏輯的越來(lái)越復(fù)雜,它依然能夠保持簡(jiǎn)潔!再配合上Lambda

用簡(jiǎn)單的幾行代碼分分鐘就解決你負(fù)責(zé)的業(yè)務(wù)問(wèn)題。

3.什么是觀察者模式?

????????舉個(gè)栗子,Android

View

的點(diǎn)擊監(jiān)聽(tīng)器的實(shí)現(xiàn),

View

是被觀察者,

OnClickListener

對(duì)象是觀察者, Activity要如何知道

View

被點(diǎn)擊了?那就是派一個(gè)

OnClickListener

對(duì)象,入駐

View

,與

View

達(dá)成一個(gè)訂 閱關(guān)系,一旦View

被點(diǎn)擊了,就通過(guò)

OnClickListener

對(duì)象的

OnClick

方法傳達(dá)給

Activity

。采用觀察者模式可以避免去輪詢檢查,節(jié)約有限的cpu

資源。

4.RxJava原理理解

????????被觀察者通過(guò)訂閱將事件按順序依次傳遞給觀察者?

5.實(shí)例

1.

建立被觀察者

Observable

&

生產(chǎn)事件

2.

建立觀察者

Observer

并 定義響應(yīng)事件的行為

3.

經(jīng)過(guò)訂閱

Subscribe

鏈接觀察者和被觀察者

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//建立觀察者 向被觀察者發(fā)送消息

Observable observable=Observable.create(new ObservableOnSubscribe() {

@Override

public void subscribe(ObservableEmitter emitter) throws Exception {

emitter.onNext(1);

emitter.onNext(2);

emitter.onNext(3);

emitter.onComplete();

}

});

//建立被觀察者 接收觀察者的消息進(jìn)行處理

Observer observer=new Observer() {

@Override

public void onSubscribe(Disposable d) {

Log.i("onSubscribe","開(kāi)始連接");

}

@Override

public void onNext(Object o) {

Log.i("onNext","接收到的值是"+o);

}

@Override

public void onError(Throwable e) {

Log.i("onError","失敗");

}

@Override

public void onComplete() {

Log.i("onComplete","完成");

}

};

//被觀察者向觀察者進(jìn)行訂閱

observable.subscribe(observer);

}

}

2.Retrofit+OkHTTP+RxJava+RecycleView的實(shí)現(xiàn)步驟

第一步:創(chuàng)建項(xiàng)目

第二步:導(dǎo)入依賴

//for rxjava

implementation 'io.reactivex.rxjava2:rxjava:2.2.6'

//for rxandroid

implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

//銜接 Retrofit & RxJava,此處一定要注意使用RxJava2的版本

implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'

//添加Retrofit依賴

implementation 'com.squareup.retrofit2:retrofit:2.5.0'

//添加Gson解析

implementation 'com.squareup.retrofit2:converter-gson:2.5.0'

//添加圖片加載庫(kù)依賴

implementation 'com.github.bumptech.glide:glide:4.12.0'

第三步:添加網(wǎng)絡(luò)權(quán)限

第四步:在activity_main.xml添加Recycle,并給其設(shè)置id

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity2"

android:padding="15dp"

android:orientation="vertical">

android:id="@+id/rv_news"

android:layout_width="match_parent"

android:layout_height="match_parent" />

第五步:創(chuàng)建子布局

android:layout_width="match_parent"

android:layout_height="150dp"

xmlns:app="http://schemas.android.com/apk/res-auto"

app:cardElevation="5dp"

app:cardCornerRadius="5dp"

android:layout_marginTop="10dp">

android:layout_width="match_parent"

android:layout_height="140dp"

android:layout_margin="5dp">

android:id="@+id/news_pic"

android:scaleType="fitXY"

android:layout_width="140dp"

android:layout_height="140dp"

app:srcCompat="@drawable/ic_launcher_background" />

android:id="@+id/news_title"

android:layout_toRightOf="@+id/news_pic"

android:layout_marginStart="20dp"

android:textSize="16sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="TextView" />

android:id="@+id/news_desc"

android:layout_marginTop="20dp"

android:layout_alignLeft="@+id/news_title"

android:layout_below="@+id/news_title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="TextView" />

第六步:創(chuàng)建實(shí)體類

package com.hopu.day23_rxjava.model;

import java.util.List;

public class News {

private boolean success;

private String title;

private String subtitle;

private String update_time;

private List data;

public void setSuccess(boolean success) {

this.success = success;

}

public boolean getSuccess() {

return success;

}

public void setTitle(String title) {

this.title = title;

}

public String getTitle() {

return title;

}

public void setSubtitle(String subtitle) {

this.subtitle = subtitle;

}

public String getSubtitle() {

return subtitle;

}

public String getUpdate_time() {

return update_time;

}

public void setUpdate_time(String update_time) {

this.update_time = update_time;

}

public void setData(List data) {

this.data = data;

}

public List getData() {

return data;

}

public class Data {

private int index;

private String title;

private String desc;

private String pic;

private String hot;

private String url;

private String mobilUrl;

public void setIndex(int index) {

this.index = index;

}

public int getIndex() {

return index;

}

public void setTitle(String title) {

this.title = title;

}

public String getTitle() {

return title;

}

public void setDesc(String desc) {

this.desc = desc;

}

public String getDesc() {

return desc;

}

public void setPic(String pic) {

this.pic = pic;

}

public String getPic() {

return pic;

}

public void setHot(String hot) {

this.hot = hot;

}

public String getHot() {

return hot;

}

public void setUrl(String url) {

this.url = url;

}

public String getUrl() {

return url;

}

public void setMobilUrl(String mobilUrl) {

this.mobilUrl = mobilUrl;

}

public String getMobilUrl() {

return mobilUrl;

}

}

}

第七步:創(chuàng)建適配器

public class NewsAdapter extends RecyclerView.Adapter {

List list;

public void setResource(List list){

this.list=list;

notifyDataSetChanged();

}

@NonNull

@Override

public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item,parent,false);

ViewHolder viewHolder=new ViewHolder(view);

return viewHolder;

}

@Override

public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

News.Data data=list.get(position);

holder.news_title.setText(data.getTitle());

holder.news_desc.setText(data.getDesc());

Glide.with(holder.view).load(data.getPic()).into(holder.news_pic);

}

@Override

public int getItemCount() {

if (list==null){

return 0;

}else {

return list.size();

}

}

public class ViewHolder extends RecyclerView.ViewHolder {

TextView news_title,news_desc;

ImageView news_pic;

View view;

public ViewHolder(@NonNull View itemView) {

super(itemView);

view=itemView;

news_desc=itemView.findViewById(R.id.news_desc);

news_title=itemView.findViewById(R.id.news_title);

news_pic=itemView.findViewById(R.id.news_pic);

}

}

}

第八步:設(shè)置適配器

private RecyclerView rv_news;

NewsAdapter newsAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

rv_news=findViewById(R.id.rv_news);

newsAdapter=new NewsAdapter();

LinearLayoutManager layoutManager=new LinearLayoutManager(MainActivity2.this);

rv_news.setLayoutManager(layoutManager);

rv_news.setAdapter(newsAdapter);

retrofitGet();

}

第九步:進(jìn)行網(wǎng)絡(luò)請(qǐng)求

1. 創(chuàng)建請(qǐng)求接口

public interface News_Interface {

@GET("api/hotlist?type=baiduRD")

Observable getNews();

}

2. 開(kāi)始網(wǎng)絡(luò)請(qǐng)求

3. 處理返回結(jié)果

private void retrofitGet() {

Retrofit retrofit=new Retrofit.Builder()

.baseUrl("https://api.vvhan.com/")

.addConverterFactory(GsonConverterFactory.create())

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

.build();

News_Interface newsInterface=retrofit.create(News_Interface.class);

Observable observable=newsInterface.getNews();

observable.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Observer() {

@Override

public void onSubscribe(Disposable d) {

}

@Override

public void onNext(News news) {

newsAdapter.setResource(news.getData());

}

@Override

public void onError(Throwable e) {

Log.i("onError","連接失敗");

}

@Override

public void onComplete() {

}

});

柚子快報(bào)邀請(qǐng)碼778899分享:android RxJava

http://yzkb.51969.com/

精彩文章

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18407852.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄