In my Android application, when I add the numbers in the array list that I dynamically created, I am adding up. However, I can not remove the count in the row that I delete. The example screen image is available on the link.
MainActivity
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.ArrayAdapter
import android.widget.ListView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
var arrayList: ArrayList<Values> = ArrayList()
var m_listItems = ArrayList<Int>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var listView = findViewById<ListView>(R.id.list_view)
listView.adapter = MyArrayAdapter(applicationContext, arrayList)
val m_adapter = ArrayAdapter<Int>(applicationContext, android.R.layout.simple_list_item_1, m_listItems)
add_button.setOnClickListener(View.OnClickListener {
var input_number = edit_number.getText().toString().toInt()
var input_text = edit_text.getText().toString()
arrayList.add(Values(input_text, input_number))
m_listItems.add(input_number)
var sum = 0
for (element in m_listItems)
sum += element
total_tv.setText("TOTAL: $sum")
m_adapter.notifyDataSetChanged()
})
}
}
MyArrayAdapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.*
class MyArrayAdapter (var screen: Context, var value: ArrayList) : BaseAdapter() {
private class ViewHolder(row: View?) {
var tv_text:TextView
var tv_number:TextView
var delete_button: Button
init {
this.tv_text =row?.findViewById(R.id.tv_text) as TextView
this.tv_number =row?.findViewById(R.id.tv_number) as TextView
this.delete_button =row?.findViewById(R.id.delete_button) as Button
}
}
override fun getView(position: Int, view_view: View?, viewGroup: ViewGroup?): View {
var view:View?
var viewHolder:ViewHolder
if(view_view == null){
var place =LayoutInflater.from(screen)
view = place.inflate(R.layout.account_list, viewGroup,false)
viewHolder =ViewHolder(view)
view.tag=viewHolder
}
else {
view=view_view
viewHolder =view.tag as ViewHolder
}
var value:Values =getItem(position) as Values
viewHolder.tv_text.text = value.text
viewHolder.tv_number.text = value.number.toString()
view!!.findViewById<Button>(R.id.delete_button).setOnClickListener(View.OnClickListener {
removeItem(position)
})
return view as View
}
private fun removeItem(position: Int) {
value.removeAt(position)
notifyDataSetChanged()
}
override fun getItem(position: Int): Any {
return value.get(position)
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getCount(): Int {
return value.count()
}
}
Values Class
data class Values (var text:String, var number:Int)