kotlin RecyclerView 显示后台数据 参考

第一步新建Activity


RecyclerView提供了三种布局管理器:

LinerLayoutManager 以垂直或者水平列表方式展示Item
GridLayoutManager 以网格方式展示Item
StaggeredGridLayoutManager 以瀑布流方式展示Item
private lateinit var prService: PrService
private var coAdapter: CoAdapter? = null
private lateinit var manager: GridLayoutManager
manager = GridLayoutManager(mContext, 3, GridLayoutManager.VERTICAL, false)
coAdapter = CoAdapter(mContext,  mutableListOf())
coAdapter?.setBlankView(emptyView)
rv_coupon.layoutManager = manager
rv_coupon.adapter = coAdapter

 

 

prService = RetrofitManager().getDefaultClient(PrService::class.java)

第二步获取数据显示

private fun getData() {
    prService.discountList()
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(object : Disposable<RespMsg<MutableList<DistData>>>(mContext) {
            override fun onNext(t: RespMsg<MutableList<DistData>>) {
                super.onNext(t)
                if (t.code == 200) {
                   if (null != t.data){
                       coAdapter?.list?.addAll(t.data)
                       coAdapter?.notifyDataSetChanged()
                   }
                }

            }
        })

}

第三步是适配器

class CoAdapter(mContext: Context, val list: MutableList<DistData>) : RecyclerView.Adapter<RecyclerView.ViewHolder> {


    private lateinit var mCouponOnClickListener: CouponOnClickListener
    override fun itemCount(): Int {
        return list.size
    }

    override fun onBindViewHolder(p0: RecyclerView.ViewHolder, p1: Int) {
        if (p0 is RVViewHolder) {
            val item = list[p1]
            ImageUtils.displayCircleImage(p0.itemView.coupon_companyLogo_im,item.companyLogo)
            p0.itemView.coupon_companyName_tv.text = item.companyName
    
            if (list[p1]!!.dicountType ==0){
                Glide.with(mContext).load(R.mipmap.coupon_voucher_yellow_bg).into(p0.itemView.coupon_im)
                Glide.with(mContext).load(R.mipmap.coupon_voucher_dicount0_bg).into(p0.itemView.coupon_dicount_im)
                } else  if (list[p1]!!.dicountType ==1){
                Glide.with(mContext).load(R.mipmap.coupon_voucher_blue_bg).into(p0.itemView.coupon_im)
                Glide.with(mContext).load(R.mipmap.coupon_voucher_dicount1_bg).into(p0.itemView.coupon_dicount_im)
            }


        }
    }



    override fun createVH(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder {
        return RVViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_coupon_lm, parent, false))
    }
   //回调
    interface CouponOnClickListener {
        fun coupponOnClickListener(position: Int)
    }

    fun setOnCheckedChangeListener(listener: CouponOnClickListener) {
        this.mCouponOnClickListener = listener

    }
}
class DistData(
    val beginTime: String,
    val companyLogo: String,
    val companyName: String,
    val content: String
   
)

第4步布局 获取后台返回的数据显示

@GET(DISCOUNT_LIST_URL)
fun discountList(): Flowable<RespMsg<MutableList<DistData>>>

第5步布局

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/rv_coupon"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginStart="23dp"
    android:layout_marginTop="23dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    />

 

第6步网络请求

public class RetrofitManager{
private Retrofit.Builder retrofitBuilder;
private Gson mGson;

public RetrofitManager() {
    mGson = new GsonBuilder().serializeNulls().create();
    retrofitBuilder = RetrofitBuilder.getInstance().getBuilder();
}

public <T> T getDefaultClient(Class<T> serviceClass) {
    OkHttpClient client = OkHttpClientManager.getInstance().getBuilder().build();
    return retrofitBuilder
            .client(client)
            .addConverterFactory(GsonConverterFactory.create(mGson))
            .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
            .build().create(serviceClass);
}
}
public class OkHttpClientManager {
    private static final String TAG = "OkHttpClientManager";
    private OkHttpClient.Builder builder;
    private static OkHttpClientManager instance = null;

    private OkHttpClientManager() {
        builder = new OkHttpClient.Builder()
                .connectTimeout(15, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(15, TimeUnit.SECONDS)
                .addInterceptor(ParamsInterceptor.getInstance())
                .addInterceptor(LoggingInterceptor.getInstance());
    }

    public static OkHttpClientManager getInstance() {
        if (instance == null) {
            synchronized (OkHttpClientManager.class) {
                if (instance == null) {
                    instance = new OkHttpClientManager();
                }
            }
        }
        return instance;
    }

    public OkHttpClient.Builder getBuilder() {
        return builder;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值