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即可免费获取