控件-----实现listView的互斥事件

我用的是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()
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值