activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 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="com.example.lenovo.koltindemo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Hello World!" /> </LinearLayout>adapter_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="120dp" android:layout_height="120dp" android:src="@mipmap/ic_launcher" android:id="@+id/item_imageview"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/item_textview" android:textColor="#FF0000"/> </LinearLayout>Mactivity类
package com.example.lenovo.koltindemo import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.support.v7.widget.LinearLayoutManager import android.util.AndroidException import com.google.gson.Gson import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import kotlinx.android.synthetic.main.activity_main.* import retrofit2.Retrofit import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory class MainActivity : AppCompatActivity() { lateinit var adapter:IAddapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) recyclerview.layoutManager=LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false) adapter=IAddapter(this) recyclerview.adapter=adapter getData() } fun getData(){ var retrofit=Retrofit.Builder() .baseUrl("http://japi.juhe.cn") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build() var iserver :Iservice=retrofit.create(Iservice::class.java) iserver.getData() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { next-> var result=next.string() println(result) var gson=Gson() var bean=gson.fromJson(result,Bean::class.java) adapter.addData(bean) } ,{ t-> } ) } }
IAdapter类
package com.example.lenovo.koltindemo import android.content.Context import android.media.Image import android.os.Parcel import android.os.Parcelable import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import com.bumptech.glide.Glide import java.sql.RowId /** * Created by lenovo on 2017/12/14. */ class IAddapter(context1:Context) : RecyclerView.Adapter<IAddapter.ViewHolder>() { var context:Context =context1 var list:ArrayList<Book> = ArrayList() fun addData(bean: Bean){ list.addAll(bean.result.bookList) notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { var view=LayoutInflater.from(context).inflate(R.layout.adapter_main,null) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder?, position: Int) { holder!!.item_textview.setText(list.get(position).name) Glide.with(context).load(list.get(position).coverImg).into(holder!!.item_imageview) } override fun getItemCount(): Int { return list.size } class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { lateinit var item_imageview:ImageView lateinit var item_textview :TextView init { item_imageview=view.findViewById(R.id.item_imageview) item_textview=view.findViewById(R.id.item_textview) } } }IService 类
package com.example.lenovo.koltindemo import io.reactivex.Observable import okhttp3.ResponseBody import retrofit2.http.GET import java.util.* /** * Created by lenovo on 2017/12/14. */ interface Iservice { @GET("/comic/book?key=f54c4c57143b8fad9bf3193cab52a81c") fun getData() : Observable<ResponseBody> }Bean类
package com.example.lenovo.koltindemo /** * Created by lenovo on 2017/12/14. */ data class Bean( val error_code: Int, //200 val reason: String, //请求成功! val result: Result ) data class Result( val total: Int, //15767 val limit: Int, //20 val bookList: List<Book> ) data class Book( val name: String, //灵神考试 val type: String, //少年漫画 val area: String, //国漫 val des: String, val finish: Boolean, //false val lastUpdate: Int, //20150603 val coverImg: String //http://imgs.juheapi.com/comic_xin/5559b86938f275fd560ad613.jpg )依赖
compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-scalars:2.0.0' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.7' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'com.github.bumptech.glide:glide:3.7.0'
网络权限
<uses-permission android:name="android.permission.INTERNET"/>