Koltin23,手把手教你写Android项目文档

homeFragment.onHomeSuccess(nearbySellerList, otherSellerList)

} else {

//无数据,异常页面

homeFragment.onHomeFailed()

}

}

}

}

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

//失败

Log.d(“HomeFragmentPresenster”, “onFailure=====” + t.toString())

}

})

}

}

HomeRvAdapter.kt负责adapter每一个条目的刷新,这里对于大list条目只是设置了一个TextView

package com.example.takeout.ui.adapter

import android.content.Context

import android.view.View

import android.view.ViewGroup

import android.widget.TextView

import androidx.recyclerview.widget.RecyclerView

import com.daimajia.slider.library.SliderLayout

import com.daimajia.slider.library.SliderTypes.TextSliderView

import com.example.takeout.R

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

import org.jetbrains.anko.find

class HomeRvAdapter(val context: Context) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

//定义常量

companion object {

val TYPE_TITLE = 0

val TYPE_SELLER = 1

}

var mDatas: ArrayList = ArrayList()

fun setData(data: ArrayList) {

this.mDatas = data

notifyDataSetChanged()

}

/**

  • 不同position对应不同类型

*/

override fun getItemViewType(position: Int): Int {

if (position == 0) {

return TYPE_TITLE

} else {

return TYPE_SELLER

}

}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

val viewType = getItemViewType(position)

when (viewType) {

TYPE_TITLE -> (holder as TitleHolder).bindData(“我是title----------------------------------------”)

TYPE_SELLER -> (holder as SellerHolder).bindData(mDatas[position - 1])

}

}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {

when (viewType) {

TYPE_TITLE -> return TitleHolder(View.inflate(context, R.layout.item_title, null))

TYPE_SELLER -> return SellerHolder(View.inflate(context, R.layout.item_seller, null))

else -> return TitleHolder(View.inflate(context, R.layout.item_home_common, null))

}

}

override fun getItemCount(): Int {

if (mDatas.size > 0) {

return mDatas.size + 1

} else {

return 0

}

}

//内部类,商家的holder

inner class SellerHolder(item: View) : RecyclerView.ViewHolder(item) {

val tvTitle: TextView

init {

tvTitle = item.find(R.id.tv_title)

}

fun bindData(seller: Seller) {

tvTitle.text = seller.name

}

}

//存放图片的url和名称

var url_maps: HashMap<String, Int> = HashMap()

//内部类,title的holder

inner class TitleHolder(item: View) : RecyclerView.ViewHolder(item) {

val sliderLayout: SliderLayout

init {

sliderLayout = item.findViewById(R.id.slider)

}

fun bindData(data: String) {

if (url_maps.size == 0) {

url_maps.put(“Hannibal”, R.mipmap.pic1);

url_maps.put(“Big Bang Theory”, R.mipmap.pic2);

url_maps.put(“House of Cards”, R.mipmap.pic3);

url_maps.put(“Game of Thrones”, R.mipmap.pic4);

for ((key, value) in url_maps) {

val textSlideView: TextSliderView = TextSliderView(context)

textSlideView.description(key).image(value)

sliderLayout.addSlider(textSlideView)

}

}

}

}

}

TakeoutService.kt是Retrofit请求的service

package com.example.takeout.model.net

import retrofit2.Call

import retrofit2.http.GET

interface TakeoutService {

//ex. @GET(“users/{user}/repos”)

//ex. fun listRepos(@Path(“user”) user: String): Call<List>

@GET(“takeout?index=0”)

fun getHomeInfo(): Call

}

ResponseInfo.kt服务器返回的数据,这里2种数据都是list类型的数据

package com.example.takeout.model.net

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

class ResponseInfo {

//服务器开发者定义的数据结构

var code: String = “”

lateinit var nearbySellerList:List

lateinit var otherSellerList:List

}

Seller.kt数据的bean对象

package com.heima.takeout.model.beans

import android.content.pm.ActivityInfo

import java.io.Serializable

import java.util.*

data class Seller(var id: Long, var pic: String, var name: String, var score: String, var sale: String,

var ensure: String, var invoice: String, var sendPrice: String, var deliveryFee: String,

var recentVisit: String, var distance: String, var time: String, var icon: String,

var activityList: ArrayList) : Serializable{

// var id: Long = 0

// var pic: String? = null

// var name: String? = null

//

// var score: String? = null

// var sale: String? = null

// var ensure: String? = null

//

// var invoice: String? = null

// var sendPrice: String? = null

// var deliveryFee: String? = null

//

// var recentVisit: String? = null

// var distance: String? = null

// var time: String? = null

//

// var icon: String? = null

//

// var activityList: ArrayList? = null

}

Json数据takeInfors

{

“nearbySellerList”: [

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 1,

“invoice”: " ",

“name”: “其他第1家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 2,

“invoice”: " ",

“name”: “其他第2家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 3,

“invoice”: " ",

“name”: “其他第3家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 4,

“invoice”: " ",

“name”: “其他第4家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 5,

“invoice”: " ",

“name”: “其他第5家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 6,

“invoice”: " ",

“name”: “其他第6家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 7,

“invoice”: " ",

“name”: “其他第7家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 8,

“invoice”: " ",

“name”: “其他第8家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 9,

“invoice”: " ",

“name”: “其他第9家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 10,

“invoice”: " ",

“name”: “其他第10家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 11,

“invoice”: " ",

“name”: “其他第11家分店”,

“pic”: “”,

“recentVisit”: “”,

“sale”: “月售8份”,

“score”: “4”,

“sendPrice”: “30”,

“time”: “”

},

{

“activityList”: “”,

“deliveryFee”: “6”,

“distance”: “996米/50分钟”,

“ensure”: “takeout/imgs/seller/3.jpg”,

“id”: 12,

“invoice”: " ",

“name”: “其他第12家分店”,

“pic”: “”,

“recentVisit”: “”,

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

推荐学习资料


  • 脑图
    360°全方位性能调优


    由于文章篇幅问题点击链接查看详细文章以及获取学习笔记:GitHub

绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-TKQw27zV-1710666556064)]
[外链图片转存中…(img-ZT3wokHV-1710666556064)]
[外链图片转存中…(img-1QidGy6k-1710666556065)]
[外链图片转存中…(img-39TPbB9y-1710666556065)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-VvgwX9Kk-1710666556065)]

推荐学习资料


  • 脑图
    [外链图片转存中…(img-WYSl4cKO-1710666556066)]
    [外链图片转存中…(img-MIsC4qkd-1710666556066)]
    [外链图片转存中…(img-JOb0fLuV-1710666556066)]
    由于文章篇幅问题点击链接查看详细文章以及获取学习笔记:GitHub
  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值