|
|
@@ -0,0 +1,260 @@
|
|
|
+package cn.muchinfo.rma.view.base.reference
|
|
|
+
|
|
|
+import android.annotation.SuppressLint
|
|
|
+import android.os.Bundle
|
|
|
+import android.os.PersistableBundle
|
|
|
+import android.view.*
|
|
|
+import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
+import androidx.recyclerview.widget.RecyclerView
|
|
|
+import cn.muchinfo.rma.R
|
|
|
+import cn.muchinfo.rma.lifecycle.bindOptional
|
|
|
+import cn.muchinfo.rma.view.autoWidget.*
|
|
|
+import cn.muchinfo.rma.view.base.BaseActivity
|
|
|
+import cn.muchinfo.rma.view.base.BaseFragment
|
|
|
+import cn.muchinfo.rma.view.base.app.Constant
|
|
|
+import cn.muchinfo.rma.view.base.home.reference.ReferenceAdapter
|
|
|
+import cn.muchinfo.rma.view.base.home.reference.ReferenceViewModel
|
|
|
+import cn.muchinfo.rma.view.base.procurement.TopTabYrdzAdpater
|
|
|
+import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
|
|
|
+import com.blankj.utilcode.util.LogUtils
|
|
|
+import com.blankj.utilcode.util.SPUtils
|
|
|
+import org.greenrobot.eventbus.EventBus
|
|
|
+import org.greenrobot.eventbus.Subscribe
|
|
|
+import org.greenrobot.eventbus.ThreadMode
|
|
|
+import org.jetbrains.anko.*
|
|
|
+import org.jetbrains.anko.support.v4.UI
|
|
|
+
|
|
|
+class TjmdReferenceActivity : BaseActivity<ReferenceViewModel>() , ReferenceAdapter.OnContentScrollListener{
|
|
|
+
|
|
|
+ val titlename by lazy {
|
|
|
+ intent?.getStringExtra("titlename")
|
|
|
+ }
|
|
|
+
|
|
|
+ private lateinit var swipeToLayout: SwipeToLoadLayout
|
|
|
+ private lateinit var statusLayout: StatusLayout
|
|
|
+ lateinit var horScrollview: CustomHorizontalScrollView
|
|
|
+ lateinit var recyclerView: RecyclerView
|
|
|
+
|
|
|
+ lateinit var dataRecyclerview : RecyclerView
|
|
|
+
|
|
|
+ var fistShow: Int = 0
|
|
|
+ var lastShow: Int = 0
|
|
|
+
|
|
|
+ val thisTag by lazy {
|
|
|
+ "ReferenceActivity"
|
|
|
+ }
|
|
|
+
|
|
|
+ //标题头部
|
|
|
+ val topAdapter by lazy {
|
|
|
+ TopTabYrdzAdpater(this)
|
|
|
+ }
|
|
|
+
|
|
|
+ val referenceAdapter by lazy {
|
|
|
+ ReferenceAdapter(this)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
+ super.onCreate(savedInstanceState)
|
|
|
+ EventBus.getDefault().register(this)
|
|
|
+ viewModel.initData(tag = thisTag){ isCompleted, _ ->
|
|
|
+ if (isCompleted){
|
|
|
+ referenceAdapter.notifyDataSetChanged()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ verticalLayout {
|
|
|
+ linearLayout {
|
|
|
+ background = resources.getDrawable(R.color.white)
|
|
|
+ //头部标题
|
|
|
+ topBar {
|
|
|
+ commonLeftButton()
|
|
|
+ commonTitle {
|
|
|
+ text = titlename
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }.lparams(matchParent, autoSize(120))
|
|
|
+
|
|
|
+ linearLayout {
|
|
|
+ linearLayout {
|
|
|
+ background = resources.getDrawable(R.color.white)
|
|
|
+ gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
|
|
|
+ textView {//待点价头部左侧数据
|
|
|
+// viewModel.titleList.bindOptional(context) {
|
|
|
+// text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: "":
|
|
|
+// }
|
|
|
+ text = "合约"
|
|
|
+ textColorStr = "#AAAAAA"
|
|
|
+ textSizeAuto = 31
|
|
|
+ }.lparams(wrapContent, wrapContent){
|
|
|
+ marginStart = autoSize(30)
|
|
|
+ }
|
|
|
+ }.lparams(autoSize(250), autoSize(100))
|
|
|
+ referenceAdapter.setOnContentScrollListener(this@TjmdReferenceActivity)
|
|
|
+ inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
|
|
|
+ horScrollview = this
|
|
|
+ setOnCustomScrollChangeListener { _, scrollX, _, _, _ -> //代码重复,可以抽取/////
|
|
|
+ referenceAdapter.offestX = scrollX
|
|
|
+ val viewHolderCacheList: List<ReferenceAdapter.ItemViewHolder> =
|
|
|
+ referenceAdapter.viewHolderCacheList
|
|
|
+ if (null != viewHolderCacheList) {
|
|
|
+ val size = viewHolderCacheList.size
|
|
|
+ for (i in 0 until size) {
|
|
|
+ viewHolderCacheList[i].horItemScrollview.scrollTo(
|
|
|
+ scrollX,
|
|
|
+ 0
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ relativeLayout {
|
|
|
+ recyclerView { // 列头
|
|
|
+ val linearLayoutManager = LinearLayoutManager(context)
|
|
|
+ linearLayoutManager.orientation = LinearLayoutManager.HORIZONTAL
|
|
|
+ layoutManager = linearLayoutManager
|
|
|
+ background = resources.getDrawable(R.color.white)
|
|
|
+ adapter = topAdapter
|
|
|
+ }
|
|
|
+// viewModel.titleList.bindOptional(context) {
|
|
|
+// val titleStringList = arrayListOf<String>()
|
|
|
+// it?.subList(1, it.size)?.forEach { data ->
|
|
|
+// titleStringList.add(data.columntitle?.replace("\\n", "\n") ?: "")
|
|
|
+// }
|
|
|
+// topAdapter.setDatas(titleStringList)
|
|
|
+// }
|
|
|
+ if (SPUtils.getInstance().getString(Constant.oem) != "tjmd") {
|
|
|
+ topAdapter.setDatas(arrayListOf("卖价","卖量","买价","买量","最新价","涨跌","幅度","今开","昨结","最低","最高","振幅","总量","现量","持仓量","日增","金额"))
|
|
|
+ } else {
|
|
|
+ topAdapter.setDatas(arrayListOf("卖价","买价","最新价","涨跌","幅度","今开","昨结","最低","最高","振幅"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }.lparams(matchParent, matchParent)
|
|
|
+ }.lparams(matchParent, autoSize(100))
|
|
|
+
|
|
|
+ statusLayout(contentBlock = {
|
|
|
+ statusLayout = this
|
|
|
+ setRetryAction {
|
|
|
+
|
|
|
+ }
|
|
|
+// bindTaskStatus(viewModule.status)
|
|
|
+ swipeToLoadLayout {
|
|
|
+ swipeToLayout = this
|
|
|
+ setEnableRefresh(true)
|
|
|
+ setEnableLoadMore(false)
|
|
|
+ setOnRefreshListener {
|
|
|
+ // 查盘面,订阅行情
|
|
|
+ viewModel.queryQuoteDay(
|
|
|
+ tag = thisTag,
|
|
|
+ first = fistShow,
|
|
|
+ last = lastShow,
|
|
|
+ list = viewModel.transferDataList.value ?: arrayListOf()
|
|
|
+ ) { isCompleted, _ ->
|
|
|
+ if (isCompleted) {
|
|
|
+ if (swipeToLayout.getIsRefreshing()) {
|
|
|
+ swipeToLayout.finishRefresh()
|
|
|
+ }
|
|
|
+ dataRecyclerview.adapter?.notifyItemRangeChanged(fistShow, lastShow)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setEnableScrollContentWhenLoaded(false)
|
|
|
+ setEnableLoadMoreWhenContentNotFull(false)
|
|
|
+
|
|
|
+ recyclerView { // 数据
|
|
|
+ dataRecyclerview = this
|
|
|
+ background = resources.getDrawable(R.color.white)
|
|
|
+ adapter = referenceAdapter
|
|
|
+ addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
|
|
+ override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
|
+ super.onScrolled(recyclerView, dx, dy)
|
|
|
+ val viewHolderCacheList: List<ReferenceAdapter.ItemViewHolder> =
|
|
|
+ referenceAdapter.viewHolderCacheList
|
|
|
+ if (null != viewHolderCacheList) {
|
|
|
+ val size = viewHolderCacheList.size
|
|
|
+ for (i in 0 until size) {
|
|
|
+ viewHolderCacheList[i].horItemScrollview.scrollTo(
|
|
|
+ referenceAdapter.getOffestX(),
|
|
|
+ 0
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
|
|
+ override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
|
|
+ super.onScrollStateChanged(recyclerView, newState)
|
|
|
+ // DES: 找出当前可视Item位置
|
|
|
+ val linearLayoutManager = dataRecyclerview.layoutManager as LinearLayoutManager
|
|
|
+ if (newState == RecyclerView.SCROLL_STATE_IDLE) {// 这个判断是当recyclerview不滚动时
|
|
|
+ fistShow = linearLayoutManager.findFirstVisibleItemPosition()//获取第一个显示条目
|
|
|
+ lastShow = linearLayoutManager.findLastVisibleItemPosition()//获取最后一个显示条目
|
|
|
+ if (fistShow != -1 && lastShow != -1) {
|
|
|
+ viewModel.queryQuoteDay(
|
|
|
+ tag = thisTag ?: "",
|
|
|
+ first = fistShow,
|
|
|
+ last = lastShow,
|
|
|
+ list = viewModel.transferDataList.value ?: arrayListOf()
|
|
|
+ ) { isCompleted, _ ->
|
|
|
+ if (isCompleted) {
|
|
|
+ dataRecyclerview.adapter?.notifyItemRangeChanged(fistShow, lastShow)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }, emptyBlock = {
|
|
|
+ emptyView(hint = resources.getString(R.string.now_no_data))
|
|
|
+ }).lparams(matchParent, matchParent)
|
|
|
+
|
|
|
+ viewModel.transferDataList.bindOptional(context) {
|
|
|
+ if (it?.size ?: 0 > 10){
|
|
|
+ lastShow = 10
|
|
|
+ }else{
|
|
|
+ lastShow = it?.size ?: 0
|
|
|
+ }
|
|
|
+ if (it?.isEmpty() == true || it?.size == 0) {
|
|
|
+ statusLayout.showEmpty()
|
|
|
+ } else {
|
|
|
+ if (swipeToLayout.getIsRefreshing()) {
|
|
|
+ swipeToLayout.finishRefresh()
|
|
|
+// mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
|
|
|
+ }
|
|
|
+ statusLayout.showSuccess()
|
|
|
+ referenceAdapter.setDatas(it)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onDestroy() {
|
|
|
+ super.onDestroy()
|
|
|
+ EventBus.getDefault().unregister(this)
|
|
|
+ }
|
|
|
+
|
|
|
+ @Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
+ fun onQuoteMessageEvent(quoteMessageEvent: QuoteMessageEvent) {
|
|
|
+ /** 行情推送过来的goodsid **/
|
|
|
+ quoteMessageEvent.goodsid.forEach { goodid ->
|
|
|
+ LogUtils.eTag("dadafafsjhdkjahkjdhak",goodid)
|
|
|
+ //找到相应商品信息
|
|
|
+ val goodsInfo = viewModel.transferDataList.value?.find { it.goodsid == goodid }
|
|
|
+ viewModel.transferDataList.value?.indexOf(goodsInfo)?.let {
|
|
|
+ if (it != -1) {//刷新相应item
|
|
|
+ dataRecyclerview.adapter?.notifyItemChanged(it)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ override fun onScroll(event: MotionEvent?) {
|
|
|
+ //处理单个item滚动时,顶部tab需要联动
|
|
|
+ if (null != horScrollview) horScrollview.onTouchEvent(event)
|
|
|
+ }
|
|
|
+}
|