Не могу сделать так чтобы элементы GridView брали названия картинок и текст из БД
Создал базу данных SqLite, и через цикл for должны создаваться элементы GridView. Не понимаю что не так делаю, ибо текст из БД берется и помещается, а вот с картинками лажа. Какие костыли только не использовал, но ничего не смог добиться. У меня есть подозрения что проблема именно в itemlist.add, а именно в том как я пытаюсь засунуть название картинки. Вот код:
БД:
val COL_ID_SERVICES = "id"
val COL_TITLE_SERVICES = "title"
val COL_NAME_IMAGES_SERVICES = "imgname"
val createTableServices = "CREATE TABLE $TABLE_NAME_SERVICES( " +
"$COL_ID_SERVICES INT primary key not null, " +
"$COL_NAME_IMAGES_SERVICES text not null, " +
"$COL_TITLE_SERVICES text not null);";
db?.execSQL(createTableAccount)
db?.execSQL(createTableServices)
val inserttableServices = "insert into $TABLE_NAME_SERVICES (id, title, imgname) values " +
"(1, 'Консультация и согласование', 'R.mipmap.ic_launcher_consult')," +
"(2, 'Умный дом', 'R.mipmap.ic_launcher_smart_home')," +
"(3, 'Электронная подпись', 'R.mipmap.ic_launcher_signature')," +
"(4, 'Генераторные установки', 'R.mipmap.ic_launcher_generator')," +
"(5, 'Солнечные электростанции', 'R.mipmap.ic_launcher_solar_panels')," +
"(6, 'Проектирование и строительство сетей', 'R.mipmap.ic_launcher_projects')," +
"(7, 'Проверка и установка приборов учёта', 'R.mipmap.ic_launcher_devices')," +
"(8, 'Ремонт и проверка сетей', 'R.mipmap.ic_launcher_repair')," +
"(9, 'Тестирование и диагностика', 'R.mipmap.ic_launcher_test')," +
"(10, 'Зарядные станции для электромобилей', 'R.mipmap.ic_launcher_cars')," +
"(11, 'IT продукты', 'R.mipmap.ic_launcher_it_products')," +
"(12, 'Опоры двойного назначения', 'R.mipmap.ic_launcher_double');"
db?.execSQL(inserttableServices)
@SuppressLint("Range")
fun readDataServices() : MutableList<Service>
{
val list : MutableList<Service> = ArrayList()
val db = this.readableDatabase
val queryservices = "Select title, imgname from $TABLE_NAME_SERVICES"
val resultservices = db.rawQuery(queryservices, null)
if (resultservices.moveToFirst())
{
do
{
val Service = Service()
Service.Title = resultservices.getString(resultservices.getColumnIndex(COL_TITLE_SERVICES))
Service.Imgname = resultservices.getString(resultservices.getColumnIndex(COL_NAME_IMAGES_SERVICES))
list.add(Service)
}while (resultservices.moveToNext())
}
resultservices.close()
db.close()
return list
И код самой Activity
val Serv = arrayOfNulls<String>(12)
val Imgs = arrayOfNulls<String>(12)
override fun onCreate(savedInstanceState: Bundle?) {
WindowCompat.setDecorFitsSystemWindows(window, false)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_catalog)
var resultservice = ""
val context = this
val db = BruhDataBase(context)
var dataser = db.readDataServices()
for (i in 0..(dataser.size-1))
{
resultservice = (dataser.get(i).Title)
Serv[i] = resultservice
resultservice = (dataser.get(i).Imgname)
Imgs[i] = resultservice
}
val ServicesGrid = this.findViewById(R.id.servicesgrid) as GridView
val adapter = gridadapter(this, R.layout.servicesgridlayout, data)
ServicesGrid.adapter = adapter
}
val data : ArrayList<servicesgridlayout>
get()
{
val item_list : ArrayList<servicesgridlayout> = ArrayList<servicesgridlayout>()
for (i in Serv.indices)
{
item_list.add(servicesgridlayout(Imgs[i].toString(), Serv[i].toString()))
}
return item_list
}
}
Буду очень рад если кто-то сможет помочь
Источник: Stack Overflow на русском