我用的是kotlin写的,用java的类似就可以,只摘要了adapter和调用方法,具体的可以按照自己的需求来
1、adapter如下,主要是添加一个selectedItemPosition()方法
class TipAdapter(context: Context?, percents: List<String>?) : BaseAdapter() {
private val mContext: Context
private val mPercents: List<String>
private val inflater: LayoutInflater
private var selectedPosition: Int? = 0
init {
this.mContext = context!!
this.mPercents = getPercent(percents)
inflater = LayoutInflater.from(context)
}
private fun getPercent(percents: List<String>?): List<String> {
var percents = percents
if (percents == null) {
percents = ArrayList()
}
return percents
}
override fun getItem(position: Int): Any {
return mPercents[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getCount(): Int {
return mPercents!!.size
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var convertView = convertView
val holder: ViewHodler
if (convertView == null) {
holder = ViewHodler()
convertView = inflater.inflate(R.layout.main_list_item_tip_percent, null)
holder.llTip = convertView!!.findViewById(R.id.ll_tip) as LinearLayout
holder.tvPercent = convertView!!.findViewById(R.id.tv_percent) as TextView
holder.tvTip = convertView!!.findViewById(R.id.tv_tip) as TextView
holder.ivSelected = convertView!!.findViewById(R.id.iv_selected) as ImageView
convertView.tag = holder
} else {
holder = convertView.tag as ViewHodler
}
var percent = mPercents[position]
holder.tvPercent!!.text = percent
holder.tvTip!!.text = getTipFromPercent(percent)
//------------1-----------要做判断
if (selectedPosition == position) {
holder.llTip!!.isSelected = true
holder.ivSelected!!.visibility = VISIBLE
} else {
holder.llTip!!.isSelected = false
holder.ivSelected!!.visibility = GONE
}
return convertView
}
//-----------2------------主要是这个方法
fun selectedItemPosition(position: Int) {
this.selectedPosition = position
}
private inner class ViewHodler {
var llTip: LinearLayout? = null
var tvPercent: TextView? = null
var tvTip: TextView? = null
var ivSelected: ImageView? = null
}
}
2、调用:在onItemClick方法里调用
override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
//---------3---------调用
mAdapter!!.selectedItemPosition(position)
mAdapter!!.notifyDataSetChanged()
}