Koltin21,Android大厂高级面试题灵魂100问

homeFragmentPresenster.getHomeInfo()

homeRvAdapter.setData(datas)

//有数据可以滚动才可以监听滚动事件,设置标题的透明效果

rvHome.setOnScrollListener(object : RecyclerView.OnScrollListener() {

override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {

if (recyclerView != null) {

super.onScrollStateChanged(recyclerView, newState)

}

}

override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {

if (recyclerView != null) {

super.onScrolled(recyclerView, dx, dy)

}

sum += dy

if (sum > distance) {

alpha = 255

} else {

alpha = sum * 200 / distance

alpha += 55

}

Log.e(“home”, “alpha:$alpha”)

ll_title_container.setBackgroundColor(Color.argb(alpha, 0x31, 0x90, 0xe8))

}

})

}

fun onHomeSuccess() {

}

fun onHomeFailed() {

}

}

HomeFragmentPresenster.kt presenter展示层,处理相关的业务逻辑

package com.example.takeout.presenter

import android.util.Log

import com.example.takeout.model.net.TakeoutService

import com.example.takeout.ui.fragment.HomeFragment

import com.google.gson.Gson

import com.google.gson.reflect.TypeToken

import com.heima.takeout.model.beans.Seller

import com.heima.takeout.model.net.ResponseInfo

import org.json.JSONObject

import retrofit2.Call

import retrofit2.Callback

import retrofit2.Response

import retrofit2.Retrofit

import retrofit2.converter.gson.GsonConverterFactory

class HomeFragmentPresenster(val homeFragment: HomeFragment) {

val takeoutService: TakeoutService

init {

val retrofit = Retrofit.Builder()

.baseUrl(“http://localhost:8080/”)

.addConverterFactory(GsonConverterFactory.create())

.build()

takeoutService = retrofit.create(TakeoutService::class.java!!)

}

/**

  • 使用异步获取数据

*/

fun getHomeInfo() {

//TOTO:要异步访问

val homeCall = takeoutService.getHomeInfo();

homeCall.enqueue(object : Callback {

override fun onResponse(call: Call?, response: Response?) {

if (response == null) {

Log.d(“HomeFragmentPresenster”, “服务器没有成功返回=====”)

} else {

if (response.isSuccessful()) {

val responseInfo = response.body()

if (responseInfo.code.equals(“0”)) {

val json = responseInfo.data

parserJson(json)

} else if (responseInfo.code.equals("-1")) {

//返回值和接口文档约定

}

} else {

Log.d(“HomeFragmentPresenster”, “服务器代码错误=====”)

}

}

}

override fun onFailure(call: Call?, t: Throwable?) {

Log.d(“HomeFragmentPresenster”, “onFailure=====”)

}

})

//有数据,成功页面

homeFragment.onHomeSuccess()

//无数据,异常页面

homeFragment.onHomeFailed()

}

/**

  • 解析数据

*/

private fun parserJson(json: String?) {

//解析数据

val gson = Gson()

var jsonObject = JSONObject(json)

//附近的商家

var nearby = jsonObject.getString(“nearbySellerList”)

val nearbySellers: List =

gson.fromJson(nearby, object : TypeToken<List>() {}.type)

//其他的商家

val other = jsonObject.getString(“otherSellerList”)

val otherSellers: List =

gson.fromJson(other, object : TypeToken<List>() {}.type)

//TODO:刷新UI

//有数据,成功页面

if (nearbySellers.isNotEmpty() || otherSellers.isNotEmpty()) {

homeFragment.onHomeSuccess()

} else {

//无数据,异常页面

homeFragment.onHomeFailed()

}

}

}

ResponseInfo.kt服务端定义的数据结构

package com.heima.takeout.model.net

最后笔者收集整理了一份Flutter高级入门进阶资料PDF

以下是资料目录和内容部分截图



里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。学不会来打我!

ckage com.heima.takeout.model.net

最后笔者收集整理了一份Flutter高级入门进阶资料PDF

以下是资料目录和内容部分截图

[外链图片转存中…(img-wgtjmxHD-1646479131851)]
[外链图片转存中…(img-gQeBUH3V-1646479131853)]
里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。学不会来打我!
[外链图片转存中…(img-tAHwPLSz-1646479131853)]
以上资料皆无偿分享,领取方式:点击我的GitHub即可免费获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值