我已经用Swift编程3年了,我是Android开发的新手,我正在尝试从图像选择器中选择一个图像,并将其放入回收器视图,我可以使用可绘制文件夹中的硬编码图像来完成此操作,但不知道如何使用我选择的图像来完成此操作。
当我选择一个图像时,它是成功的,我可以显示图像文件路径
i/system.out:tony image path is/document/raw:/storage/emulated/0/download/max.jpg
当我试图将它添加到可绘制文件夹中已经硬编码的图像名称数组中时,它会显示这些图像,并在末尾显示一个空白的空间。
我想这是因为我正在从可绘制文件夹中获取硬编码图像,而这个选取的图像可能不在该文件夹中?
我不希望最终产品中的硬编码图像,这只是为了看到循环视图工作。
我也不会将它们保存到应用程序中填写了所有feid后将它们上载到数据库的设备中,因此它们不会添加到BA中。
我的回收视图
class ArtistRecycleAdapter(val context: Context, val artists: List<ArtistImages>) : RecyclerView.Adapter<ArtistRecycleAdapter.ArtistHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ArtistHolder {
val view = LayoutInflater.from(context).inflate(R.layout.images_added, parent, false)
return ArtistHolder(view)
}
override fun getItemCount(): Int {
return artists.count()
}
override fun onBindViewHolder(holder: ArtistHolder, position: Int) {
holder.bindProduct(artists[position], context)
}
inner class ArtistHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val artistImage = itemView?.findViewById<ImageView>(R.id.artistImageMain)
fun bindProduct(artists: ArtistImages, context: Context) {
val resourceId = context.resources.getIdentifier(artists.artistImage, "drawable", context.packageName)
artistImage?.setImageResource(resourceId)
}
}
}
我的活动结果
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == PICK_IMAGE_MULTIPLE && resultCode == Activity.RESULT_OK
&& null != data
) {
if (data.getClipData() != null) {
var count = data.clipData.itemCount
for (i in 0..count - 1) {
var imageUri: Uri = data.clipData.getItemAt(i).uri
getPathFromURI(imageUri)
println("Tony image uri is $imageUri")
}
} else if (data.getData() != null) {
var imagePath: String = data.data.path
Log.e("imagePath", imagePath)
println("Tony image path is $imagePath")
DataService.artistImages.add(ArtistImages(imagePath))
adapter.notifyDataSetChanged()
}
}
}