@@ -6,7 +6,6 @@ import android.support.v7.widget.RecyclerView
66import android.view.LayoutInflater
77import android.view.View
88import android.view.ViewGroup
9- import android.widget.AdapterView
109import android.widget.LinearLayout
1110import android.widget.TextView
1211import com.blogspot.e_kanivets.moneytracker.MtApp
@@ -22,7 +21,7 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
2221
2322 private var formatController: FormatController
2423
25- private var itemClickListener: AdapterView . OnItemClickListener ? = null
24+ private var itemClickListener: OnItemClickListener ? = null
2625
2726 private var whiteRed: Int
2827 private var whiteGreen: Int
@@ -33,10 +32,10 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
3332 private var context: Context
3433
3534 private var summaryPresenter: ShortSummaryPresenter
36- private var needHeaderView : Boolean = false
35+ private var isHeaderViewNeeded : Boolean = false
3736 private lateinit var headerViewHolder: HeaderViewHolder
3837
39- constructor (context: Context , records: List <Record >, formatController: FormatController , needHeaderView : Boolean ) {
38+ constructor (context: Context , records: List <Record >, formatController: FormatController , isHeaderViewNeeded : Boolean ) {
4039 this .context = context
4140 this .records = records
4241
@@ -49,18 +48,18 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
4948
5049 summaryPresenter = ShortSummaryPresenter (context)
5150
52- if (needHeaderView ) {
53- val summaryView = summaryPresenter.create( true , HeaderViewHolder (LayoutInflater .from(context).inflate(R .layout.view_summary_records, null )) )
54- headerViewHolder = summaryView.tag as HeaderViewHolder
51+ if (isHeaderViewNeeded ) {
52+ headerViewHolder = HeaderViewHolder (LayoutInflater .from(context).inflate(R .layout.view_summary_records, null ), itemClickListener )
53+ summaryPresenter.create( true , headerViewHolder)
5554 }
5655
57- this .needHeaderView = needHeaderView
56+ this .isHeaderViewNeeded = isHeaderViewNeeded
5857 this .formatController = formatController
5958 }
6059
6160 override fun getItemCount () = records.size
6261
63- override fun getItemViewType (position : Int ): Int = if (position == 0 && needHeaderView ) {
62+ override fun getItemViewType (position : Int ): Int = if (position == 0 && isHeaderViewNeeded ) {
6463 TYPE_HEADER
6564 } else {
6665 TYPE_ITEM
@@ -70,39 +69,43 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
7069 if (viewType == TYPE_HEADER ) {
7170 headerViewHolder
7271 } else {
73- ViewHolder (LayoutInflater .from(context).inflate(R .layout.view_record, parent, false ))
72+ ViewHolder (LayoutInflater .from(context).inflate(R .layout.view_record, parent, false ), itemClickListener )
7473 }
7574
7675 override fun onBindViewHolder (rvViewHolder : RecyclerView .ViewHolder , position : Int ) {
77- if (position == 0 && needHeaderView ) {
76+ if (position == 0 && isHeaderViewNeeded ) {
7877 // adapter already bound to view
7978 return
8079 }
8180
8281 val viewHolder = rvViewHolder as ViewHolder
83- val record: Record = records[position - if (needHeaderView ) 1 else 0 ]
82+ val record: Record = records[position - if (isHeaderViewNeeded ) 1 else 0 ]
8483 viewHolder.container.setBackgroundColor(if (record.isIncome) whiteGreen else whiteRed)
8584 viewHolder.tvPrice.setTextColor(if (record.isIncome) green else red)
8685
8786 viewHolder.tvDateAndTime.text = formatController.formatDateAndTime(record.time)
88- viewHolder.tvPrice.text = formatController.formatSignedAmount(
89- ( if (record.isIncome) 1 else - 1 ) * record.fullPrice )
87+ val price = ( if (record.isIncome) record.fullPrice else getNegative(record.fullPrice))
88+ viewHolder.tvPrice.text = formatController.formatSignedAmount(price )
9089 viewHolder.tvTitle.text = record.title
9190 viewHolder.tvCategory.text = record.category?.name
9291 viewHolder.tvCurrency.text = record.currency
9392 }
9493
94+ private fun getNegative (number : Double ): Double {
95+ return - 1 * number
96+ }
97+
9598 fun setRecords (recordsList : List <Record >, report : IRecordReport ? , currency : String , ratesNeeded : List <String >) {
9699 records = recordsList
97100 summaryPresenter.update(report, currency, ratesNeeded)
98101 notifyDataSetChanged()
99102 }
100103
101- fun setOnItemClickListener (itemClickListener : AdapterView . OnItemClickListener ) {
104+ fun setOnItemClickListener (itemClickListener : OnItemClickListener ) {
102105 this .itemClickListener = itemClickListener
103106 }
104107
105- inner class ViewHolder : RecyclerView .ViewHolder {
108+ class ViewHolder : RecyclerView .ViewHolder {
106109
107110 var container: LinearLayout
108111 var tvDateAndTime: TextView
@@ -111,7 +114,7 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
111114 var tvCategory: TextView
112115 var tvCurrency: TextView
113116
114- constructor (view: View ) : super (view) {
117+ constructor (view: View , itemClickListener : OnItemClickListener ? ) : super (view) {
115118 container = view.container
116119 tvDateAndTime = view.tvDateAndTime
117120 tvPrice = view.tvPrice
@@ -120,34 +123,36 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
120123 tvCurrency = view.tvCurrency
121124
122125 view.setOnClickListener {
123- itemClickListener?.onItemClick(null , null , adapterPosition, 0L )
126+ itemClickListener?.onItemClick(adapterPosition)
124127 }
125128 }
126129
127130 }
128131
129- inner class HeaderViewHolder : RecyclerView .ViewHolder {
132+ class HeaderViewHolder : RecyclerView .ViewHolder {
130133
131134 var tvPeriod: TextView
132135 var tvTotalIncome: TextView
133136 var tvTotalExpense: TextView
134137 var tvTotal: TextView
135138
136- constructor (view: View ) : super (view) {
137-
139+ constructor (view: View , itemClickListener: OnItemClickListener ? ) : super (view) {
138140 tvPeriod = view.tvPeriod
139141 tvTotalIncome = view.tvTotalIncome
140142 tvTotalExpense = view.tvTotalExpense
141143 tvTotal = view.tvTotal
142144
143145 view.setOnClickListener {
144- itemClickListener?.onItemClick(null , null , 0 , 0L )
146+ itemClickListener?.onItemClick(0 )
145147 }
146-
147148 }
148149
149150 }
150151
152+ interface OnItemClickListener {
153+ fun onItemClick (position : Int )
154+ }
155+
151156 companion object {
152157
153158 private const val TYPE_HEADER = 0
0 commit comments