You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RecyclerView无法正常显示Pixabay API获取的图片求助

问题描述

使用Pixabay API获取图片,接口能返回预期结果,但RecyclerView显示图片存在异常。以下是相关代码片段,猜测问题可能和数据模型有关,寻求解决帮助。


ImageAdapter.kt

private val items = mutableListOf<Hit>()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ImageViewHolder {
    val inflater = LayoutInflater.from(parent.context)
    val view = inflater.inflate(R.layout.image_items, parent, false)
    return ImageViewHolder(view)
}

override fun onBindViewHolder(holder: ImageViewHolder, position: Int) {
    val currentItem = items[position]
    holder.image_id.text = currentItem.id.toString()
    Glide.with(holder.itemView.context).load(currentItem.largeImageURL).into(holder.image)
}

override fun getItemCount(): Int {
    return items.size
}

fun initData(itemsList: List<Hit>) {
    this.items.clear()
    this.items.addAll(itemsList)
    notifyDataSetChanged()
}

class ImageViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    val image = itemView.findViewById<ImageView>(R.id.tv_Image)
    val image_id = itemView.findViewById<TextView>(R.id.image_id)
}

ImageViewModel.kt

init {
    GlobalScope.launch {
        repo.getImages()
    }
}

val images: LiveData<List<Hit>>
    get() = repo.Images

MainActivity.kt

private lateinit var imageViewModel: ImageViewModel
private lateinit var imageRecycler: RecyclerView
private lateinit var adapter: ImageAdapter
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    imageRecycler = findViewById(R.id.recyclerView)
    adapter = ImageAdapter()
    imageRecycler.layoutManager = LinearLayoutManager(this)
    imageRecycler.adapter = adapter

    val api = RetrofitHelper.getInstance().create(PexelApi::class.java)
    val repo = ImageRepository(api)
    imageViewModel = ViewModelProvider(this, ImageViewModelFactory(repo))[ImageViewModel::class.java]
    imageViewModel.images.observe(this) { list ->
        adapter.initData(list)
    }
}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:listitem="@layout/image_items" />

</LinearLayout>

image_items.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.cardview.widget.CardView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:layout_margin="10dp"
        android:elevation="10dp"
        app:cardCornerRadius="10dp">
        <TextView
            android:id="@+id/image_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="12dp"
            android:text="id" />
        <androidx.appcompat.widget.AppCompatImageView
            android:id="@+id/tv_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY" />
    </androidx.cardview.widget.CardView>

</LinearLayout>

内容的提问来源于stack exchange,提问作者Jadu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:05:26