package com.dollearn.student.ui.shop
|
|
import android.content.Context
|
import android.view.inputmethod.InputMethodManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.fragment.BaseFragment
|
import com.dollearn.student.MainActivity
|
import com.dollearn.student.R
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.Goods
|
import com.dollearn.student.network.entity.GoodsType
|
import com.dollearn.student.network.requestByF
|
import com.dollearn.student.ui.shop.adapter.GoodsAdapter
|
import com.dollearn.student.ui.shop.adapter.GoodsTypeAdapter
|
import com.dollearn.student.utils.Const
|
import com.dollearn.student.utils.event.EmptyEvent
|
import kotlinx.android.synthetic.main.fragment_shop.*
|
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.Subscribe
|
import org.jetbrains.anko.support.v4.startActivity
|
|
class ShopFragment : BaseFragment() {
|
override fun contentViewId() = R.layout.fragment_shop
|
|
private val goodsTypes = arrayListOf<GoodsType>()
|
private val typeAdapter = GoodsTypeAdapter(goodsTypes)
|
private var page = 1
|
private var search:String? = null
|
private val goods = arrayListOf<Goods>()
|
private val adapter = GoodsAdapter(goods)
|
|
override fun onFirstVisibleToUser() {
|
rv_type.layoutManager = LinearLayoutManager(requireContext(),LinearLayoutManager.HORIZONTAL,false)
|
rv_type.adapter = typeAdapter
|
rv_goods.layoutManager = GridLayoutManager(requireContext(),4)
|
rv_goods.adapter = adapter
|
refreshLayout.setOnRefreshListener {
|
page = 1
|
getGoods()
|
}
|
refreshLayout.setOnLoadMoreListener {
|
page++
|
getGoods()
|
}
|
|
typeAdapter.setOnItemClickListener { view, position ->
|
if (refreshLayout.isRefreshing)
|
return@setOnItemClickListener
|
goodsTypes[position].checked = !goodsTypes[position].checked
|
typeAdapter.notifyItemChanged(position)
|
refreshLayout.autoRefresh()
|
}
|
|
adapter.setOnItemClickListener { view, position ->
|
startActivity<GoodsDetailActivity>("id" to goods[position].id)
|
}
|
|
tv_search.setOnClickListener {
|
(requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
|
.hideSoftInputFromWindow(requireActivity().currentFocus!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
|
if (refreshLayout.isRefreshing)
|
return@setOnClickListener
|
search = et_search.text.toString()
|
if (search.isNullOrEmpty())
|
search = null
|
refreshLayout.autoRefresh()
|
}
|
tv_score.text = ((activity as MainActivity).score).toString()
|
getTypes()
|
refreshLayout.autoRefresh()
|
EventBus.getDefault().register(this)
|
}
|
|
private fun getTypes() {
|
HttpManager.goodTypeStudy().requestByF(this){_,data->
|
goodsTypes.clear()
|
goodsTypes.addAll(data?: arrayListOf())
|
typeAdapter.notifyDataSetChanged()
|
}
|
}
|
|
private fun getGoods(){
|
HttpManager.goodListStudy(page,search,goodsTypes.filter { it.checked }.map { it.id.toString() }).requestByF(this,success = {_,data->
|
if (page == 1)
|
goods.clear()
|
goods.addAll(data ?.records?: arrayListOf())
|
adapter.notifyDataSetChanged()
|
if (goods.isEmpty())
|
refreshLayout.finishRefreshWithNoMoreData()
|
else if (data ?.records.isNullOrEmpty())
|
refreshLayout.finishLoadMoreWithNoMoreData()
|
else if (page == 1)
|
refreshLayout.finishRefresh()
|
else
|
refreshLayout.finishLoadMore()
|
}){_,_->
|
if (page == 1)
|
refreshLayout.finishRefresh(false)
|
else
|
refreshLayout.finishLoadMore(false)
|
page--
|
}
|
}
|
|
@Subscribe
|
fun refreshScore(e:EmptyEvent){
|
if (e.code == Const.EventCode.REFRESH_SCORE){
|
tv_score.text = ((activity as MainActivity).score).toString()
|
}
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
EventBus.getDefault().unregister(this)
|
}
|
}
|