notifyItemChanged后面的RecyclerView中PopupWindow的位置错误
我有另一个RecyclerView里面的RecyclerView。 点击内部的RecyclerView的项目,像下面那样显示PopupWindow。
当用户点击弹出内的按钮时,外部RecyclerView的项目应该更新数据。 问题是,在更新外部项目notifyItemChanged(position)
,PopupWindow显示在片段的左上角,而不是内部RecyclerView的下面项目。
override fun onBindViewHolder(holder : MessageItemHolder, messagePosition : Int) { val item = messages[messagePosition] //Display some data if(item.isRateViewOpened) showRatePopup(holder, messagePosition, item) holder.tvMessage.setOnLongClickListener { showRatePopup(holder, messagePosition, item) true } } private fun showRatePopup(holder : MessageItemHolder, messagePosition : Int, message : Message) { messages[messagePosition].isRateViewOpened = true val rateView = layoutInflater.inflate(R.layout.popup_rate, null) setRateIcons(message.status, rateView) rateView.ibLike.setOnClickListener { displayRateStatus(RateStatus.LIKE, message, messagePosition, rateView) } rateView.ibDislike.setOnClickListener { displayRateStatus(RateStatus.DISLIKE, message, messagePosition, rateView) } val popupWindow = PopupWindow(rateView, FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, true) popupWindow.setBackgroundDrawable(ColorDrawable()) popupWindow.isOutsideTouchable = true val location = IntArray(2) holder.tvMessage.getLocationOnScreen(location) popupWindow.showAsDropDown(holder.tvMessage, 0, 0, Gravity.NO_GRAVITY) popupWindow.setOnDismissListener { messages[messagePosition].isRateViewOpened = false } }
- Kotlin SingleTon应用程序类
- 最佳和节省时间的方式编码在android studio
- Android Kotlin Gson缓慢的Json反序列化
- Android Kotlin – 每分钟发送通知
- 在kotlin中获取实例错误:智能转换为“类型”是不可能的
- 如何在Kotlin anko中使用TextInputLayout和TextInputEditText
- AndroidStudio / Kotlin – 未解决的参考:ReadWriteProperty – Kotlin版本1.0.0-beta-1038
- Android室 – 使用LIKE选择查询
- ArrayBroadcastChannel:第二个订阅者不更新UI