首页 > 解决方案 > Horizo​​ntal RecyclerView 中的适配器代码错误

问题描述

我正在尝试使用我为水平 RecyclerView“借用”的示例。该代码在 Java 上,我已将其转换为 Kotlin,但在 Adaptor 中出现了一些编译错误。

这是我想要实现的外观。

在此处输入图像描述

MainActivity.kt:

class MainActivity: AppCompatActivity() {
    private val TAG = "MainActivity"

    //vars
    private val mNames = ArrayList < String > ()
    private val mImageUrls = ArrayList < String > ()

    override fun onCreate(savedInstanceState: Bundle ? ) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        getImages()
    }

    private fun getImages() {
        Log.d(TAG, "initImageBitmaps: preparing bitmaps.")
        mImageUrls.add("https://i.imgur.com/ZcLLrkY.jpg")

        mNames.add("Havasu Falls")
        mImageUrls.add("https://i.redd.it/tpsnoz5bzo501.jpg")
        mNames.add("Trondheim")
        mImageUrls.add("https://i.redd.it/qn7f9oqu7o501.jpg")
        mNames.add("Portugal")
        mImageUrls.add("https://i.redd.it/j6myfqglup501.jpg")
        mNames.add("Rocky Mountain National Park")
        mImageUrls.add("https://i.redd.it/0h2gm1ix6p501.jpg")
        mNames.add("Mahahual")
        mImageUrls.add("https://i.redd.it/k98uzl68eh501.jpg")
        mNames.add("Frozen Lake")
        mImageUrls.add("https://i.redd.it/glin0nwndo501.jpg")
        mNames.add("White Sands Desert")
        mImageUrls.add("https://i.redd.it/obx4zydshg601.jpg")
        mNames.add("Austrailia")
        mImageUrls.add("https://i.imgur.com/ZcLLrkY.jpg")
        mNames.add("Washington")
        initRecyclerView()
    }

    private fun initRecyclerView() {
        Log.d(TAG, "initRecyclerView: init recyclerview")
        val layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
        val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
        recyclerView.setLayoutManager(layoutManager)

        val adapter = RecyclerViewAdapter(this, mNames, mImageUrls)

        * *recyclerView.setAdapter(adapter)
        /* TYPE MISMATCH ERROR */
        * *
    }
}

RecycleViewAdapter.kt:

@GlideModule
class AppGlideModule : AppGlideModule()
class RecyclerViewAdapter(
    mainActivity: MainActivity,
    mNames: ArrayList<String>,
    mImageUrls: ArrayList<String>)
{
    private val TAG = "RecyclerViewAdapter"
    //vars
    private var mNames = ArrayList<String>()
    private var mImageUrls = ArrayList<String>()
    private var mContext: Context? = null
    fun RecyclerViewAdapter(
        context: Context?,
        names: ArrayList<String>,
        imageUrls: ArrayList<String>)
    {
        **this@RecyclerViewAdapter.mNames = names  /*THIS IS "AMBIGUOUS LABEL*/
        this@RecyclerViewAdapter.mImageUrls = imageUrls /*THIS IS "AMBIGUOUS LABEL*/**
        mContext = context
    }

    fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder? {
        val view: View =
        LayoutInflater.from(parent.context).inflate(R.layout.layout_listitem, parent, false)
        return ViewHolder(view)
    }

    fun onBindViewHolder(holder: ViewHolder, position: Int) {
        Log.d(TAG, "onBindViewHolder: called.")
        /*
        Glide.with(mContext)
        .asBitmap()
        .load(mImageUrls[position])
        .into(holder.image)
        */
        mContext?.let {
            Glide.with(it)
            .asBitmap()
            .load(mImageUrls[position])
            .into(holder.image)
        }
        holder.name.text = mNames[position]
        holder.image.setOnClickListener(View.OnClickListener {
            Log.d(TAG, "onClick: clicked on an image: " + mNames[position])
            Toast.makeText(mContext, mNames[position], Toast.LENGTH_SHORT).show()
        })
    }

    fun getItemCount(): Int {
        return mImageUrls.size
    }

    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        var image: CircleImageView
        var name: TextView
        init {
            image = itemView.findViewById(R.id.image_view)
            name = itemView.findViewById(R.id.name)
        }
    }
}

class Glide {
}

我没有包含 XML 等,但如果需要这些,我将包含它们。

标签: android-studiokotlin

解决方案


推荐阅读