我在將從 firebase 下載的 url 的 fileList 中的 url 傳遞到選單選項時遇到問題。我需要傳遞特定的 url,具體取決于單擊哪個選單。
代碼運行良好,沒有錯誤。
這是我的配接器代碼哪里有問題
class AdapterKarty(private val fileList: List<plik>, private val context: Context): RecyclerView.Adapter<AdapterKarty.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AdapterKarty.ViewHolder {
val a = LayoutInflater.from(parent.context).inflate(R.layout.karta_pliku,parent, false)
return ViewHolder(a);
}
override fun onBindViewHolder(holder: AdapterKarty.ViewHolder, position: Int) {
在這里,我為 ViewHolder 卡選擇了特定的 url,但我需要下面這樣的東西。
順便說一句,如果有人知道如何從下載的網址顯示檔案名(pdf),我將不勝感激
var item = fileList[position]
holder.dokument.text = item.url
}
override fun getItemCount(): Int {
return fileList.size
}
inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
var dokument: TextView = itemView.findViewById(R.id.tv_dokument)
private var menu: ImageView = itemView.findViewById(R.id.iv_menu)
init {
menu.setOnClickListener {
val popupMenu = PopupMenu(itemView.context, it)
popupMenu.setOnMenuItemClickListener { item ->
when (item.itemId) {
R.id.menu_open -> {
在這里,我需要根據所選選項打開特定的 url。我需要將上面的內容(item.url)放到 Uri.parse 中。也許我錯了,但我不知道。靜態 url 正在作業,但我必須從 fileList 中獲取具體資訊。
val intent = Intent(Intent.ACTION_VIEW, Uri.parse())
context.startActivity(intent)
true
}
else -> false
}
}
popupMenu.inflate(R.menu.main_menu)
popupMenu.show()
}
}
}
}
uj5u.com熱心網友回復:
你真的想要一個 PopupMenu 在你的串列中嗎?在串列中,fileList 變數中的每個條目都有一項。所以選單只會顯示一個選項。
但是你的問題是如何訪問PopupMenu onMenuItemClickListener Uri.parse() 中的url?
無論如何,與分配 ViewHolder TextView 的文本值的方式相同,您可以將 url 分配給 ViewHolder 中的另一個變數。
class AdapterKarty(private val fileList: List<plik>, private val context: Context): RecyclerView.Adapter<AdapterKarty.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AdapterKarty.ViewHolder {
val a = LayoutInflater.from(parent.context).inflate(R.layout.karta_pliku,parent, false)
return ViewHolder(a);
}
override fun onBindViewHolder(holder: AdapterKarty.ViewHolder, position: Int) {
var item = fileList[position]
--> holder.filePath = item.url
holder.dokument.text = item.url
}
override fun getItemCount(): Int {
return fileList.size
}
inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
--> var filePath: String
var dokument: TextView = itemView.findViewById(R.id.tv_dokument)
private var menu: ImageView = itemView.findViewById(R.id.iv_menu)
init {
menu.setOnClickListener {
val popupMenu = PopupMenu(itemView.context, it)
popupMenu.setOnMenuItemClickListener { item ->
when (item.itemId) {
R.id.menu_open -> {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(filePath)) <---
context.startActivity(intent)
true
}
else -> false
}
}
popupMenu.inflate(R.menu.main_menu)
popupMenu.show()
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466770.html
