如何使用registerContentMenu在科特林的回收视图



我尝试制作一个小型文件管理器,我希望在保存文件或文件夹时能获得上下文菜单,我尝试使用registerForContextMenu(newRecyclerView),但它对我不起作用,根本不会发生任何事,相反,如果我用按钮或ImageView等其他元素来做,菜单会非常完美,我已经在谷歌上搜索了几个小时,但我找到的大多数解决方案都是用java实现的,我不知道如何在kotlin中实现它们,需要记住的一点是,在处理文件时,当我们在目录中导航时,recylerview会不断变化,我想要的是一个菜单,在那里我可以复制、剪切文件等等,我知道还有其他解决方案,但我想用上下文菜单来实现它们,这里是MyAdapter,我不放Main Activity,因为它是一个暴乱

import...
class MyAdapter(private val newsList: 
ArrayList<News>):RecyclerView.Adapter<MyAdapter.MyViewHolder>() 
{
private lateinit var mListener:OnItemClickListener
interface OnItemClickListener{
fun onItemClick(position: Int)
}
fun  setOnItemClicKListener(listener:OnItemClickListener){
mListener = listener
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: 
Int): MyViewHolder {
val itemView = 
LayoutInflater.from(parent.context).inflate(R.layout.list_items,
parent, false)

return MyViewHolder(itemView, mListener)
}
override fun onBindViewHolder(holder: MyViewHolder, position: 
Int) {
val currentItem = newsList[position]
holder.titleImage.setImageResource(currentItem.titleImage)
holder.tvHeading.text = currentItem.heading
}
override fun getItemCount(): Int {
return newsList.size
}
class MyViewHolder(itemView: View, listener: 
OnItemClickListener):RecyclerView.ViewHolder(itemView){
val titleImage: ShapeableImageView = 
itemView.findViewById(R.id.title_image)
val tvHeading:TextView = itemView.findViewById(R.id.tvHeading)
init{
itemView.setOnClickListener {
listener.onItemClick(adapterPosition)
}
}
}
}

与其用上下文菜单注册整个RecyclerView,不如注册每个子视图。这是因为您持有的是子视图,而不是RecyclerView本身。

相关内容

  • 没有找到相关文章

最新更新