Я успешно построил gridView
, используя этот код:
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var inflater = mContext!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
var row = inflater.inflate(R.layout.image_cell, null)
row!!.glide_img_cell_id.setImageResource(R.drawable.cookie_icon_60)
return row
}
Возвращает тестовое изображение, как и в gridView
Тем не менее, мои реальные данные изображения получены с urls
, поэтому я использую Glide
. Я уже проверил свои реальные данные, используя Glide
, и он работает нормально. Тем не менее, я не могу заставить его работать в моем GridView
. Это мой измененный код:
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var recipe = this.recipeArray!![position].recipeImage
var inflater = mContext!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
var row = inflater.inflate(R.layout.image_cell, null)
row!!.glide_img_cell_id.loadImageUrl(recipe) as GlideImageView
return row
}
Я делаю то же самое, за исключением того, что теперь я использую Glide
. Еще одна вещь, которая меня смущает, это convertView
. Некоторые уроки, которые я смотрел, используют его, другие нет. Что это? Очевидно, что в первом примере мне это не нужно, так как оно работает.
UPDATE
При приведении к GlideImageView
приложение вылетает с kotlin.Unit cannot be cast to com.bumptech.glide.Glide
, без приведения оно просто ничего не показывает.
UPDATE2
Как и предполагалось, я изменил код на следующий, но приложение все еще пустое и ничего не показывает:
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var recipe = this.recipeArray!![position].recipeImage
var inflater = mContext!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
var row = inflater.inflate(R.layout.image_cell, null)
Glide.with(mContext).load(recipe).fitCenter().centerCrop().into(row!!.glide_img_cell_id)
return row
}
Это кажется правильным?
UPDATE
Все еще не решили это. Посмотрели в XML-файл, который должен содержать изображение. Выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/glide_img_cell_id"
android:layout_centerInParent="true"
android:scaleType="centerCrop"
/>
Также использовали <com.master.glideimageview.GlideImageView
вместо <ImageView
, но все равно ничего.
Также пробовал это:
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var recipe = this.recipeArray!![position].recipeImage
var cv = convertView
var test = LayoutInflater.from(mContext)
cv = test.inflate(R.layout.image_cell, parent, false)
Glide.with(this.mContext).load(recipe).into(cv!!.glide_img_cell_id as ImageView)
return cv
}
... что похоже. Но это тоже не работает. Не знаю, почему это не работает ...