Prechádzať zdrojové kódy

期货-委托、成交、资金列表

ProGo 4 rokov pred
rodič
commit
4957ed2d27
26 zmenil súbory, kde vykonal 776 pridanie a 114 odobranie
  1. 5 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/FutureFragment.kt
  2. 114 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostFragment.kt
  3. 29 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostInfoFragment.kt
  4. 30 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostListFragment.kt
  5. 7 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostViewModel.kt
  6. 37 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealData.kt
  7. 54 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealFragment.kt
  8. 70 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealViewModel.kt
  9. 57 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustChildFragment.kt
  10. 85 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustChildViewModel.kt
  11. 72 21
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustFragment.kt
  12. 0 77
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustViewModel.kt
  13. 0 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldFragment.kt
  14. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/FutureMarket.kt
  15. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/FutureMarketModel.kt
  16. 1 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketBaseModel.kt
  17. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketData.kt
  18. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketFragment.kt
  19. 21 0
      RMA/app/src/main/res/layout/cost_fragment.xml
  20. 45 0
      RMA/app/src/main/res/layout/cost_info.xml
  21. 58 0
      RMA/app/src/main/res/layout/deal_fragment.xml
  22. 53 0
      RMA/app/src/main/res/layout/deal_item.xml
  23. 12 0
      RMA/app/src/main/res/layout/entrust_child.xml
  24. 7 5
      RMA/app/src/main/res/layout/entrust_fragment.xml
  25. 5 0
      RMA/app/src/main/res/values/strings.xml
  26. 10 0
      RMA/app/src/main/res/values/styles.xml

+ 5 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/FutureFragment.kt

@@ -12,9 +12,11 @@ import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseFragment
+import cn.muchinfo.rma.view.base.future.costs.CostFragment
+import cn.muchinfo.rma.view.base.future.deals.DealFragment
 import cn.muchinfo.rma.view.base.future.entrusts.EntrustFragment
 import cn.muchinfo.rma.view.base.future.holds.HoldFragment
-import cn.muchinfo.rma.view.base.future.market.FutureMarket
+import cn.muchinfo.rma.view.base.future.markets.FutureMarket
 import com.qmuiteam.qmui.widget.tab.QMUITabSegment
 
 
@@ -42,8 +44,8 @@ class FutureFragment : BaseFragment<FutureViewModel>() {
         FutureMarket.getInstance(), // 行情
         HoldFragment.getInstance(), // 持仓
         EntrustFragment.getInstance(), // 委托
-        FutureMarket.getInstance(), // 成交
-        FutureMarket.getInstance() // 资金
+        DealFragment.getInstance(), // 成交
+        CostFragment.getInstance() // 资金
     )
 
     override fun onCreateView(

+ 114 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostFragment.kt

@@ -0,0 +1,114 @@
+package cn.muchinfo.rma.view.base.future.costs
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.annotation.NonNull
+import androidx.annotation.Nullable
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentPagerAdapter
+import androidx.viewpager.widget.ViewPager
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.base.BaseFragment
+import cn.muchinfo.rma.view.base.future.BaseFutureModel
+import cn.muchinfo.rma.view.base.future.entrusts.EntrustChildFragment
+import com.qmuiteam.qmui.widget.tab.QMUITabSegment
+
+/**
+ * 资金相关
+ */
+class CostFragment : BaseFragment<CostViewModel>() {
+
+    companion object {
+        fun getInstance() = CostFragment()
+    }
+
+//region 数据
+    private val tabs: Array<String?> = arrayOf(
+        MyApplication.getInstance()?.resources?.getString(R.string.str_can_cancel_today), // 今日可撤
+        MyApplication.getInstance()?.resources?.getString(R.string.str_entrust_today) // 今日委托
+    )
+    private val tabFragments: Array<Fragment> = arrayOf(
+        CostInfoFragment.getInstance(MyApplication.getInstance()?.resources?.getString(R.string.str_can_cancel_today)!!),
+        CostListFragment.getInstance(MyApplication.getInstance()?.resources?.getString(R.string.str_entrust_today)!!)
+    )
+//endregion
+
+//region views
+    private var _view: View? = null
+    private var idEntrustTab: QMUITabSegment? = null // 切换
+    private var idPager: ViewPager? = null
+//endregion
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        _view = inflater.inflate(R.layout.cost_fragment, container, false)
+        initViews()
+        return _view
+    }
+
+    private fun initViews() {
+        idPager = _view?.findViewById(R.id.id_pager)
+        idEntrustTab = _view?.findViewById(R.id.id_entrust_tab)
+
+        // 设置
+        val builder = BaseFutureModel().qmuiTabSegmentConfig(idEntrustTab, 15, context)
+        idEntrustTab?.mode = QMUITabSegment.MODE_FIXED
+        // 加载数据
+        for (cat in tabs) {
+            val item = builder?.setText(cat)?.build(context)
+            idEntrustTab?.addTab(item)
+        }
+
+        idPager?.adapter = object : FragmentPagerAdapter(
+            childFragmentManager,
+            BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
+        ) {
+            @NonNull
+            override fun getItem(position: Int): Fragment {
+                return tabFragments[position]
+            }
+
+            override fun getCount(): Int {
+                return tabFragments.size
+            }
+
+            @Nullable
+            override fun getPageTitle(position: Int): CharSequence? {
+                return tabs[position]
+            }
+        }
+        idEntrustTab?.setupWithViewPager(idPager, false)
+        idEntrustTab?.addOnTabSelectedListener(object : QMUITabSegment.OnTabSelectedListener {
+            /**
+             * 当某个 Tab 被选中时会触发
+             * @param index 被选中的 Tab 下标
+             */
+            override fun onTabSelected(index: Int) {
+            }
+
+            /**
+             * 当某个 Tab 被取消选中时会触发
+             * @param index 被取消选中的 Tab 下标
+             */
+            override fun onTabUnselected(index: Int) {}
+
+            /**
+             * 当某个 Tab 处于被选中状态下再次被点击时会触发
+             * @param index 被再次点击的 Tab 下标
+             */
+            override fun onTabReselected(index: Int) {
+            }
+            /**
+             * 当某个 Tab 被双击时会触发
+             * @param index 被双击的 Tab 下标
+             */
+            override fun onDoubleTap(index: Int) {}
+        })
+    }
+}

+ 29 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostInfoFragment.kt

@@ -0,0 +1,29 @@
+package cn.muchinfo.rma.view.base.future.costs
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import cn.muchinfo.rma.view.base.BaseFragment
+
+/**
+ * 资金信息
+ */
+class CostInfoFragment(type: String?) : BaseFragment<CostViewModel>() {
+    private var type: String? = type
+
+    companion object {
+        fun getInstance(type: String?) = CostInfoFragment(type)
+    }
+
+    private var _view: View? = null
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        _view = inflater.inflate(0, container, false)
+        return _view
+    }
+}

+ 30 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostListFragment.kt

@@ -0,0 +1,30 @@
+package cn.muchinfo.rma.view.base.future.costs
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import cn.muchinfo.rma.view.base.BaseFragment
+
+/**
+ * 资金流水
+ */
+class CostListFragment(type: String?) : BaseFragment<CostViewModel>() {
+
+    private var type: String? = type
+
+    companion object {
+        fun getInstance(type: String?) = CostListFragment(type)
+    }
+
+    private var _view: View? = null
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        _view = inflater.inflate(0, container, false)
+        return _view
+    }
+}

+ 7 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/costs/CostViewModel.kt

@@ -0,0 +1,7 @@
+package cn.muchinfo.rma.view.base.future.costs
+
+import cn.muchinfo.rma.view.base.BaseViewModel
+
+class CostViewModel : BaseViewModel() {
+
+}

+ 37 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealData.kt

@@ -0,0 +1,37 @@
+package cn.muchinfo.rma.view.base.future.deals
+
+import java.io.Serializable
+
+class DealData : Serializable {
+    var goodsName: String? = ""
+        get() = field
+        set(value) {
+            field = value
+        }
+    var direction: Int? = 0
+        get() = field
+        set(value) {
+            field = value
+        }
+    var dealNum: Double? = 0.0
+        get() = field
+        set(value) {
+            field = value
+        }
+    var dealPrice: Double = 0.0
+        get() = field
+        set(value) {
+            field = value
+        }
+    var dealTime: String? = ""
+        get() = field
+        set(value) {
+            field = value
+        }
+    var goodsId: Int? = 0
+        get() = field
+        set(value) {
+            field = value
+        }
+
+}

+ 54 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealFragment.kt

@@ -0,0 +1,54 @@
+package cn.muchinfo.rma.view.base.future.deals
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.view.base.BaseFragment
+import cn.muchinfo.rma.view.base.future.entrusts.EntrustData
+
+/**
+ * 成交单
+ */
+class DealFragment : BaseFragment<DealViewModel>() {
+
+    companion object {
+        fun getInstance() = DealFragment()
+    }
+
+    private var _view: View? = null
+    private var idDealList: RecyclerView? = null
+
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        _view = inflater.inflate(R.layout.deal_fragment, container, false)
+        initViews()
+        return _view
+    }
+
+    private fun initViews() {
+
+        val list: ArrayList<DealData>? = ArrayList()
+        for (a in 1..5) {
+            val m = DealData()
+            m.goodsName = "铁矿石" + (2105 + a)
+            m.dealNum = 10.0 + a
+            m.dealPrice = 188.0 + a
+            m.dealTime = "2021-02-25 21:21:21"
+            m.direction = a
+            list?.add(m)
+        }
+
+        val layoutManager = LinearLayoutManager(context)
+        idDealList?.layoutManager = layoutManager
+        viewModel.list = list
+        idDealList?.adapter = viewModel.getAdapter()
+    }
+}

+ 70 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealViewModel.kt

@@ -0,0 +1,70 @@
+package cn.muchinfo.rma.view.base.future.deals
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.view.base.BaseViewModel
+
+class DealViewModel : BaseViewModel() {
+
+    var list: ArrayList<DealData>? = null
+
+    /**
+     * 获取配置器。
+     */
+    fun getAdapter(): RecyclerView.Adapter<HoldAdapter.HoldHolder> {
+        return HoldAdapter(context, list)
+    }
+    /**
+     * 通用的适配器。
+     */
+    class HoldAdapter(context: Context?, list: ArrayList<DealData>?) : RecyclerView.Adapter<HoldAdapter.HoldHolder>() {
+        private var list: ArrayList<DealData>? = null
+        private var inflater: LayoutInflater? = null
+        private var context: Context? = null
+        private var pink: Drawable? = null
+        private var green: Drawable? = null
+        private var priceRed: Int = 0
+        private var priceGreen: Int = 0
+        init {
+            this.list = list
+            this.inflater = LayoutInflater.from(context)
+            this.context = context
+
+            pink = context?.getDrawable(R.drawable.rma_red)
+            green = context?.getDrawable(R.drawable.rma_green)
+            priceGreen = context?.getColor(R.color.p_price_green)!!
+            priceRed = context.getColor(R.color.p_price_red)
+        }
+
+        override fun getItemCount(): Int {
+            return list?.size ?: 0
+        }
+
+        class HoldHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {
+            var idGoodsName = itemView?.findViewById<TextView>(R.id.id_goods_name)
+            var idTransType = itemView?.findViewById<TextView>(R.id.id_trans_type)
+            var idDealNum = itemView?.findViewById<TextView>(R.id.id_deal_num)
+            var idDealPrice = itemView?.findViewById<TextView>(R.id.id_deal_price)
+            var idDealTime = itemView?.findViewById<TextView>(R.id.id_deal_time)
+        }
+
+        override fun onBindViewHolder(holder: HoldHolder, position: Int) {
+            holder.idGoodsName?.text = list?.get(position)?.goodsName
+            holder.idTransType?.text = list?.get(position)?.direction.toString()
+            holder.idDealNum?.text = list?.get(position)?.dealNum.toString()
+            holder.idDealPrice?.text = list?.get(position)?.dealPrice.toString()
+            holder.idDealTime?.text = list?.get(position)?.dealTime
+        }
+
+        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HoldHolder {
+            return HoldHolder(inflater?.inflate(R.layout.deal_item, parent, false))
+        }
+
+    }
+}

+ 57 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustChildFragment.kt

@@ -0,0 +1,57 @@
+package cn.muchinfo.rma.view.base.future.entrusts
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.view.base.BaseFragment
+
+/**
+ * 今日委托和今日可撤
+ */
+class EntrustChildFragment(type: String) : BaseFragment<EntrustChildViewModel>() {
+    private var type: String? = type
+
+    companion object {
+        fun getInstance(type: String) = EntrustChildFragment(type)
+    }
+
+    private var _view: View? = null
+    private var idEntrustList: RecyclerView? = null // 委托单列表
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        _view = inflater.inflate(R.layout.entrust_child, container, false)
+        initViews()
+        return _view
+    }
+
+    private fun initViews() {
+        val list: ArrayList<EntrustData>? = ArrayList()
+        for (a in 1..5) {
+            val m = EntrustData()
+            m.goodsName = "铁矿石" + (2105 + a)
+            m.goodsCode = "I" + (2105 + a)
+            m.lastPrice = 998.0 + a
+            m.available = 1.0 + a
+            m.totals = 5.0 + a
+            m.cost = 500.0 + a
+            m.pl = 100.0 + a
+            m.plp = (100 + a) * 0.003
+            m.holdPrice = 899.0 + a
+            m.direction = a
+            list?.add(m)
+        }
+
+        val layoutManager = LinearLayoutManager(context)
+        idEntrustList?.layoutManager = layoutManager
+        viewModel.list = list
+        idEntrustList?.adapter = viewModel.getAdapter()
+    }
+}

+ 85 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustChildViewModel.kt

@@ -0,0 +1,85 @@
+package cn.muchinfo.rma.view.base.future.entrusts
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.view.base.BaseViewModel
+
+/**
+ * 今日委托和今日可撤model
+ */
+class EntrustChildViewModel : BaseViewModel() {
+
+    var list: ArrayList<EntrustData>? = null
+
+    /**
+     * 获取配置器。
+     */
+    fun getAdapter(): RecyclerView.Adapter<HoldAdapter.HoldHolder> {
+        return HoldAdapter(context, list)
+    }
+    /**
+     * 通用的适配器。
+     */
+    class HoldAdapter(context: Context?, list: ArrayList<EntrustData>?) : RecyclerView.Adapter<HoldAdapter.HoldHolder>() {
+        private var list: ArrayList<EntrustData>? = null
+        private var inflater: LayoutInflater? = null
+        private var context: Context? = null
+        private var pink: Drawable? = null
+        private var green: Drawable? = null
+        private var priceRed: Int = 0
+        private var priceGreen: Int = 0
+        init {
+            this.list = list
+            this.inflater = LayoutInflater.from(context)
+            this.context = context
+
+            pink = context?.getDrawable(R.drawable.rma_red)
+            green = context?.getDrawable(R.drawable.rma_green)
+            priceGreen = context?.getColor(R.color.p_price_green)!!
+            priceRed = context.getColor(R.color.p_price_red)
+        }
+
+        override fun getItemCount(): Int {
+            return list?.size ?: 0
+        }
+
+        class HoldHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {
+            var idGoodsName = itemView?.findViewById<TextView>(R.id.id_goods_name)
+            var idTransDirection = itemView?.findViewById<TextView>(R.id.id_trans_direction)
+            var idAvailable = itemView?.findViewById<TextView>(R.id.id_available)
+            var idHoldTotal = itemView?.findViewById<TextView>(R.id.id_hold_total)
+            var idLastPrice = itemView?.findViewById<TextView>(R.id.id_last_price)
+            var idCost = itemView?.findViewById<TextView>(R.id.id_cost)
+            var idPl = itemView?.findViewById<TextView>(R.id.id_pl)
+            var idPlp = itemView?.findViewById<TextView>(R.id.id_plp)
+
+        }
+
+        override fun onBindViewHolder(holder: HoldHolder, position: Int) {
+            holder.idGoodsName?.text = list?.get(position)?.goodsName
+            holder.idAvailable?.text = list?.get(position)?.available.toString()
+            holder.idHoldTotal?.text = list?.get(position)?.totals.toString()
+            holder.idLastPrice?.text = list?.get(position)?.lastPrice.toString()
+            holder.idCost?.text = list?.get(position)?.cost.toString()
+            holder.idPl?.text = list?.get(position)?.pl.toString()
+            holder.idPlp?.text = list?.get(position)?.plp.toString()
+            if (list?.get(position)?.direction == 0) {
+                holder.idTransDirection?.text = context?.resources?.getString(R.string.str_buy)
+            } else {
+                holder.idTransDirection?.text = context?.resources?.getString(R.string.str_sell)
+            }
+
+        }
+
+        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HoldHolder {
+            return HoldHolder(inflater?.inflate(R.layout.hold_item, parent, false))
+        }
+
+    }
+}

+ 72 - 21
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustFragment.kt

@@ -4,30 +4,44 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.annotation.NonNull
+import androidx.annotation.Nullable
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentPagerAdapter
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.view.base.BaseFragment
 import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.base.future.BaseFutureModel
+import com.google.android.material.tabs.TabLayout
+import com.qmuiteam.qmui.widget.tab.QMUITabSegment
 
 /**
- * 委托单
+ * 委托单列表
  */
 class EntrustFragment: BaseFragment<EntrustViewModel>() {
 
     companion object {
         fun getInstance() = EntrustFragment()
     }
+
 //region 数据
     private val tabs: Array<String?> = arrayOf(
         MyApplication.getInstance()?.resources?.getString(R.string.str_can_cancel_today), // 今日可撤
         MyApplication.getInstance()?.resources?.getString(R.string.str_entrust_today) // 今日委托
     )
+    private val tabFragments: Array<Fragment> = arrayOf(
+        EntrustChildFragment.getInstance(MyApplication.getInstance()?.resources?.getString(R.string.str_can_cancel_today)!!),
+        EntrustChildFragment.getInstance(MyApplication.getInstance()?.resources?.getString(R.string.str_entrust_today)!!)
+    )
 //endregion
 
 //region views
     private var _view: View? = null
-    private var idEntrustList: RecyclerView? = null // 委托单列表
+    private var idEntrustTab: QMUITabSegment? = null // 切换
+    private var idPager: ViewPager? = null
 //endregion
 
     override fun onCreateView(
@@ -43,26 +57,63 @@ class EntrustFragment: BaseFragment<EntrustViewModel>() {
 //region 函数
 
     private fun initViews() {
-        idEntrustList = _view?.findViewById(R.id.id_entrust_list)
-        val list: ArrayList<EntrustData>? = ArrayList()
-        for (a in 1..5) {
-            val m = EntrustData()
-            m.goodsName = "铁矿石" + (2105 + a)
-            m.goodsCode = "I" + (2105 + a)
-            m.lastPrice = 998.0 + a
-            m.available = 1.0 + a
-            m.totals = 5.0 + a
-            m.cost = 500.0 + a
-            m.pl = 100.0 + a
-            m.plp = (100 + a) * 0.003
-            m.holdPrice = 899.0 + a
-            m.direction = a
-            list?.add(m)
+        idPager = _view?.findViewById(R.id.id_pager)
+        idEntrustTab = _view?.findViewById(R.id.id_entrust_tab)
+
+        // 设置
+        val builder = BaseFutureModel().qmuiTabSegmentConfig(idEntrustTab, 15, context)
+        idEntrustTab?.mode = QMUITabSegment.MODE_FIXED
+        // 加载数据
+        for (cat in tabs) {
+            val item = builder?.setText(cat)?.build(context)
+            idEntrustTab?.addTab(item)
         }
-        val layoutManager = LinearLayoutManager(context)
-        idEntrustList?.layoutManager = layoutManager
-        viewModel.list = list
-        idEntrustList?.adapter = viewModel.getAdapter()
+
+        idPager?.adapter = object : FragmentPagerAdapter(
+            childFragmentManager,
+            BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
+        ) {
+            @NonNull
+            override fun getItem(position: Int): Fragment {
+                return tabFragments[position]
+            }
+
+            override fun getCount(): Int {
+                return tabFragments.size
+            }
+
+            @Nullable
+            override fun getPageTitle(position: Int): CharSequence? {
+                return tabs[position]
+            }
+        }
+        idEntrustTab?.setupWithViewPager(idPager, false)
+        idEntrustTab?.addOnTabSelectedListener(object : QMUITabSegment.OnTabSelectedListener {
+            /**
+             * 当某个 Tab 被选中时会触发
+             * @param index 被选中的 Tab 下标
+             */
+            override fun onTabSelected(index: Int) {
+            }
+
+            /**
+             * 当某个 Tab 被取消选中时会触发
+             * @param index 被取消选中的 Tab 下标
+             */
+            override fun onTabUnselected(index: Int) {}
+
+            /**
+             * 当某个 Tab 处于被选中状态下再次被点击时会触发
+             * @param index 被再次点击的 Tab 下标
+             */
+            override fun onTabReselected(index: Int) {
+            }
+            /**
+             * 当某个 Tab 被双击时会触发
+             * @param index 被双击的 Tab 下标
+             */
+            override fun onDoubleTap(index: Int) {}
+        })
     }
 
 //endregion

+ 0 - 77
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustViewModel.kt

@@ -1,15 +1,5 @@
 package cn.muchinfo.rma.view.base.future.entrusts
 
-import android.content.Context
-import android.graphics.drawable.Drawable
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import android.widget.RelativeLayout
-import android.widget.TextView
-import androidx.recyclerview.widget.RecyclerView
-import cn.muchinfo.rma.R
 import cn.muchinfo.rma.view.base.BaseViewModel
 
 /**
@@ -17,71 +7,4 @@ import cn.muchinfo.rma.view.base.BaseViewModel
  */
 class EntrustViewModel : BaseViewModel() {
 
-    var list: ArrayList<EntrustData>? = null
-
-    /**
-     * 获取配置器。
-     */
-    fun getAdapter(): RecyclerView.Adapter<HoldAdapter.HoldHolder> {
-        return HoldAdapter(context, list)
-    }
-    /**
-     * 通用的适配器。
-     */
-    class HoldAdapter(context: Context?, list: ArrayList<EntrustData>?) : RecyclerView.Adapter<HoldAdapter.HoldHolder>() {
-        private var list: ArrayList<EntrustData>? = null
-        private var inflater: LayoutInflater? = null
-        private var context: Context? = null
-        private var pink: Drawable? = null
-        private var green: Drawable? = null
-        private var priceRed: Int = 0
-        private var priceGreen: Int = 0
-        init {
-            this.list = list
-            this.inflater = LayoutInflater.from(context)
-            this.context = context
-
-            pink = context?.getDrawable(R.drawable.rma_red)
-            green = context?.getDrawable(R.drawable.rma_green)
-            priceGreen = context?.getColor(R.color.p_price_green)!!
-            priceRed = context.getColor(R.color.p_price_red)
-        }
-
-        override fun getItemCount(): Int {
-            return list?.size ?: 0
-        }
-
-        class HoldHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {
-            var idGoodsName = itemView?.findViewById<TextView>(R.id.id_goods_name)
-            var idTransDirection = itemView?.findViewById<TextView>(R.id.id_trans_direction)
-            var idAvailable = itemView?.findViewById<TextView>(R.id.id_available)
-            var idHoldTotal = itemView?.findViewById<TextView>(R.id.id_hold_total)
-            var idLastPrice = itemView?.findViewById<TextView>(R.id.id_last_price)
-            var idCost = itemView?.findViewById<TextView>(R.id.id_cost)
-            var idPl = itemView?.findViewById<TextView>(R.id.id_pl)
-            var idPlp = itemView?.findViewById<TextView>(R.id.id_plp)
-
-        }
-
-        override fun onBindViewHolder(holder: HoldHolder, position: Int) {
-            holder.idGoodsName?.text = list?.get(position)?.goodsName
-            holder.idAvailable?.text = list?.get(position)?.available.toString()
-            holder.idHoldTotal?.text = list?.get(position)?.totals.toString()
-            holder.idLastPrice?.text = list?.get(position)?.lastPrice.toString()
-            holder.idCost?.text = list?.get(position)?.cost.toString()
-            holder.idPl?.text = list?.get(position)?.pl.toString()
-            holder.idPlp?.text = list?.get(position)?.plp.toString()
-            if (list?.get(position)?.direction == 0) {
-                holder.idTransDirection?.text = context?.resources?.getString(R.string.str_buy)
-            } else {
-                holder.idTransDirection?.text = context?.resources?.getString(R.string.str_sell)
-            }
-
-        }
-
-        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HoldHolder {
-            return HoldHolder(inflater?.inflate(R.layout.hold_item, parent, false))
-        }
-
-    }
 }

+ 0 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldFragment.kt

@@ -7,9 +7,7 @@ import android.view.ViewGroup
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import cn.muchinfo.rma.R
-import cn.muchinfo.rma.view.autoWidget.photopicter.HolderFragment
 import cn.muchinfo.rma.view.base.BaseFragment
-import cn.muchinfo.rma.view.base.future.market.MarketData
 
 /**
  * 持仓列表界面

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/market/FutureMarket.kt → RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/FutureMarket.kt

@@ -1,4 +1,4 @@
-package cn.muchinfo.rma.view.base.future.market
+package cn.muchinfo.rma.view.base.future.markets
 
 import android.os.Bundle
 import android.view.LayoutInflater

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/market/FutureMarketModel.kt → RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/FutureMarketModel.kt

@@ -1,4 +1,4 @@
-package cn.muchinfo.rma.view.base.future.market
+package cn.muchinfo.rma.view.base.future.markets
 
 import cn.muchinfo.rma.view.base.BaseViewModel
 

+ 1 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/market/MarketBaseModel.kt → RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketBaseModel.kt

@@ -1,7 +1,6 @@
-package cn.muchinfo.rma.view.base.future.market
+package cn.muchinfo.rma.view.base.future.markets
 
 import android.content.Context
-import android.graphics.drawable.ColorDrawable
 import android.graphics.drawable.Drawable
 import android.view.LayoutInflater
 import android.view.View

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/market/MarketData.kt → RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketData.kt

@@ -1,4 +1,4 @@
-package cn.muchinfo.rma.view.base.future.market
+package cn.muchinfo.rma.view.base.future.markets
 
 import java.io.Serializable
 

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/market/MarketFragment.kt → RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketFragment.kt

@@ -1,4 +1,4 @@
-package cn.muchinfo.rma.view.base.future.market
+package cn.muchinfo.rma.view.base.future.markets
 
 import android.os.Bundle
 import android.view.LayoutInflater

+ 21 - 0
RMA/app/src/main/res/layout/cost_fragment.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <com.qmuiteam.qmui.widget.tab.QMUITabSegment
+        android:layout_width="match_parent"
+        android:id="@+id/id_cost_tab"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_height="40dp"/>
+
+    <androidx.viewpager.widget.ViewPager
+        android:layout_width="match_parent"
+        android:id="@+id/id_cost_pager"
+        app:layout_constraintTop_toBottomOf="@+id/id_cost_tab"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_height="0dp"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 45 - 0
RMA/app/src/main/res/layout/cost_info.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:padding="15dp"
+    android:layout_height="match_parent">
+<!--币种-->
+    <TextView
+        android:layout_width="wrap_content"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        android:id="@+id/id_currency_title"
+        style="@style/CostTitleTextStyle"
+        android:text="@string/str_currency"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:layout_width="wrap_content"
+        android:text="@string/str_markets"
+        app:layout_constraintTop_toTopOf="@+id/id_currency_title"
+        app:layout_constraintStart_toEndOf="@+id/id_rate_of_use_title"
+        style="@style/CostValueTextStyle"
+        android:layout_height="wrap_content"/>
+
+
+<!--    资金使用率-->
+    <TextView
+        android:layout_width="wrap_content"
+        app:layout_constraintStart_toStartOf="parent"
+        android:id="@+id/id_rate_of_use_title"
+        style="@style/CostTitleTextStyle"
+        android:text="@string/str_rate_of_use"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:layout_width="wrap_content"
+        android:text="@string/str_markets"
+        app:layout_constraintTop_toTopOf="@+id/id_rate_of_use_title"
+        android:id="@+id/id_rate_of_use"
+        android:layout_marginStart="20dp"
+        app:layout_constraintStart_toEndOf="@+id/id_rate_of_use_title"
+        style="@style/CostValueTextStyle"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_height="wrap_content"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 58 - 0
RMA/app/src/main/res/layout/deal_fragment.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+<!--    head-->
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:id="@+id/id_head"
+        android:paddingStart="15dp"
+        android:paddingEnd="15dp"
+        android:layout_height="wrap_content">
+        <TextView
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            android:id="@+id/id_name_type"
+            android:text="@string/str_deal_name_type"
+            style="@style/HoldHeadTextStyle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+        <TextView
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            android:id="@+id/id_deal_num_price"
+            android:text="@string/str_deal_num_price"
+            style="@style/HoldHeadTextStyle"
+            android:gravity="end"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+        <TextView
+            app:layout_constraintTop_toTopOf="parent"
+            android:id="@+id/id_deal_time"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:text="@string/str_deal_name_type"
+            style="@style/HoldHeadTextStyle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+    <include
+        layout="@layout/line_view"
+        android:id="@+id/line2"
+        app:layout_constraintTop_toBottomOf="@+id/id_head"
+        android:layout_width="match_parent"
+        android:layout_height="0.1dp"/>
+
+<!--    列表-->
+    <androidx.recyclerview.widget.RecyclerView
+        android:layout_width="match_parent"
+        android:id="@+id/id_deal_list"
+        app:layout_constraintTop_toBottomOf="@+id/line2"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_height="0dp"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 53 - 0
RMA/app/src/main/res/layout/deal_item.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:padding="15dp"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:layout_width="wrap_content"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        android:id="@+id/id_goods_name"
+        style="@style/ListTextStyle"
+        android:text="水族"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:layout_width="wrap_content"
+        app:layout_constraintTop_toBottomOf="@+id/id_goods_name"
+        app:layout_constraintStart_toStartOf="parent"
+        android:id="@+id/id_trans_type"
+        android:text="买多"
+        style="@style/ListSummaryTextStyle"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:layout_width="wrap_content"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        android:id="@+id/id_deal_num"
+        android:text="成交数量"
+        android:gravity="end"
+        style="@style/ListTextStyle"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:layout_width="wrap_content"
+        app:layout_constraintTop_toBottomOf="@+id/id_deal_num"
+        app:layout_constraintEnd_toEndOf="@+id/id_deal_num"
+        android:id="@+id/id_deal_price"
+        android:text="1552"
+        style="@style/ListSummaryTextStyle"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:layout_width="wrap_content"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:id="@+id/id_deal_time"
+        android:text="11:09:30"
+        style="@style/ListTextStyle"
+        android:layout_height="wrap_content"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 12 - 0
RMA/app/src/main/res/layout/entrust_child.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <androidx.recyclerview.widget.RecyclerView
+        android:layout_width="match_parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:id="@+id/id_entrust_list"
+        android:layout_height="match_parent"/>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 7 - 5
RMA/app/src/main/res/layout/entrust_fragment.xml

@@ -5,7 +5,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
 <!--tabs-->
-    <com.google.android.material.tabs.TabLayout
+    <com.qmuiteam.qmui.widget.tab.QMUITabSegment
         android:layout_width="match_parent"
         android:id="@+id/id_entrust_tab"
         app:layout_constraintTop_toTopOf="parent"
@@ -69,11 +69,13 @@
         android:layout_width="match_parent"
         android:layout_height="0.1dp"/>
 
-    <androidx.recyclerview.widget.RecyclerView
+    <!--pager-->
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/id_pager"
         android:layout_width="match_parent"
-        android:id="@+id/id_entrust_list"
-        app:layout_constraintTop_toBottomOf="@+id/line2"
+        android:layout_height="0dp"
         app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_height="0dp"/>
+        app:layout_constraintTop_toBottomOf="@+id/line2"
+        />
 
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 5 - 0
RMA/app/src/main/res/values/strings.xml

@@ -85,4 +85,9 @@
     <string name="str_can_cancel_today">今日可撤</string>
     <string name="str_entrust_today">今日委托</string>
 
+    <string name="str_deal_name_type">名称\n类型</string>
+    <string name="str_deal_num_price">成交数量\n价格</string>
+    <string name="str_currency">币种</string>
+    <string name="str_rate_of_use">资金使用率</string>
+
 </resources>

+ 10 - 0
RMA/app/src/main/res/values/styles.xml

@@ -97,6 +97,16 @@
         <item name="android:textColor">@color/hint_text_color</item>
         <item name="android:textSize">12sp</item>
     </style>
+    <!--资金信息-->
+    <style name="CostTitleTextStyle" parent="@android:style/Widget.TextView">
+        <item name="android:textColor">@color/rma_gray_color</item>
+        <item name="android:textSize">13sp</item>
+    </style>
+    <!--资金信息值-->
+    <style name="CostValueTextStyle" parent="@android:style/Widget.TextView">
+        <item name="android:textColor">@color/rma_black_33</item>
+        <item name="android:textSize">13sp</item>
+    </style>
     <!--期货报价牌界面列表的文字的样式-->
     <style name="HoldHeadTextStyle" parent="@style/ListSummaryTextStyle">
         <item name="android:textSize">10sp</item>