大家好,我是android kotlin的新手,我只是试图将图像从适配器传递到其他活动,但它没有显示。我使用了意向代码。我该怎么办?我分享了我的适配器和其他活动代码,这样你就可以看到如何使用意图代码
我的适配器;
class NoteAdapter(private var titleText: ArrayList<String>, private var image: ArrayList<String>) : RecyclerView.Adapter<NoteAdapter.ViewHolder>() {
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val itemTitle : TextView = itemView.findViewById(R.id.recyclerTitleText)
val itemImage : ImageView = itemView.findViewById(R.id.recyclerImage)
init {
itemView.setOnClickListener { v: View ->
val intent = Intent(itemView.context, PastNotesActivity::class.java)
intent.putExtra("oldTitle", titleText[position])
intent.putExtra("oldImage", image[position] )
itemView.context.startActivity(intent)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.recycler_row, parent, false)
return ViewHolder(v)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemTitle.text = titleText[position]
Picasso.get().load(image[position]).resize(150,150).into(holder.itemImage)
}
override fun getItemCount(): Int {
return titleText.size
}
}
另一个活动代码
class PastNotesActivity : AppCompatActivity() {
var selectedPicture: Uri? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_past_notes)
val intent = intent
val oldTitleName = intent.getStringExtra("oldTitle")
val oTitle = findViewById<TextView>(R.id.pastTitleText)
oTitle.text = oldTitleName
val oldImageView:Int = intent.getIntExtra("oldImage", 0)
val imageView = findViewById<ImageView>(R.id.pastImage)
imageView.setImageResource(oldImageView)
}
}
在您的PastNotesActivity
中,您正在提取IntExtra
,但您发送了StringExtra
。
从更改您的代码
val oldImageView:Int = intent.getIntExtra("oldImage", 0)
至
val oldImageView:String = intent.getStringExtra("oldImage", "")
然后像在onBindViewHolder
中那样使用Picasso
加载图像。