android-studio - Horizontal 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 等,但如果需要这些,我将包含它们。
解决方案
推荐阅读
- django - 如何在基于类的视图中有多个发布请求处理方法
- node.js - 带有 ExpressJS 的 NodeJS
- powershell - 在 if 语句中组合多个条件
- extjs - 重新计算模型的字段
- haskell - 使用 Haskell 读取 OBJ 文件
- python - python setup.py 在没有 sudo 的情况下安装在 anaconda 中
- .htaccess - 我如何分离主域和子域使用 mod-rewrite 和 htaccess 文件
- django - Django:跨内联表单将实例传输到模板
- machine-learning - Keras SimpleRNN 的参数数量
- javascript - Json 数据到 javascript 数组中