im new to kotlin android development and trying to build a messenger follow the youtube tutorial by lets build that apps (https://www.youtube.com/watch?v=SuRiwVF5bzs&list=PL0dzCUj1L5JE-jiBHjxlmXEkQkum_M3R-&index=4 >from 19:33) i founded i the GroupieViewHolder is not working, i spent 4 hour of time but still not able to find the arror.\
Below is what i have tried.
This is my project level gradle.file `
buildscript {
ext.kotlin_version = '1.6.21'
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.14'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
plugins {
id 'com.android.application' version '7.2.1' apply false
id 'com.android.library' version '7.2.1' apply false
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
This is my app level gradle.file
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'com.google.gms.google-services'
id 'kotlin-android-extensions'
}
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdk 32
androidExtensions {
experimental = true
}
defaultConfig {
applicationId "com.example.assignment"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
viewBinding true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.firebase:firebase-auth-ktx:21.1.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation platform('com.google.firebase:firebase-bom:31.0.1')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-storage-ktx'
implementation 'com.google.firebase:firebase-database-ktx'
implementation 'de.hdodenhof:circleimageview:3.1.0'
//Progress dialog library
implementation 'com.jpardogo.googleprogressbar:library:1.2.0'
//TODO https://github.com/lisawray/groupie cannnot add groupie into gradle.
//implementation "com.github.lisawray.groupie:groupie:$groupie_version"
implementation "com.github.lisawray.groupie:groupie:2.10.0"
implementation 'com.github.lisawray.groupie:groupie-kotlin-android-extensions:2.10.0'
implementation 'com.squareup.picasso:picasso:2.71828'
}
This is settings:gradle
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
jcenter()
}
}
rootProject.name = "Assignment"
include ':app'
This is the activity file (NewMessageActivity.kt)
package com.example.assignment
import android.content.ClipData
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.renderscript.Sampler
import android.util.Log
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.squareup.picasso.Picasso
import com.xwray.groupie.GroupieAdapter
import kotlinx.android.synthetic.main.activity_new_message.*
import com.xwray.groupie.kotlinandroidextensions.Item
import com.xwray.groupie.kotlinandroidextensions.GroupieViewHolder
import kotlinx.android.synthetic.main.song.* //THIS CANNOT BE IMPORTED
import kotlinx.android.synthetic.main.my_item_layout.* //THIS CANNOT BE IMPORTED
import kotlinx.android.synthetic.main.user_row_new_message.view.*
class NewMessageActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_new_message)
supportActionBar?.title="Select User"
fetchUsers()
}
private fun fetchUsers() {
val ref = FirebaseDatabase.getInstance().getReference("/Users")
ref.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onDataChange(p0: DataSnapshot) {
val adapter = GroupieAdapter<GroupieViewHolder>() //HERE IS THE ERROR
p0.children.forEach {
Log.d("NewMessage", it.toString())
val user = it.getValue(User::class.java)
if(user != null) {
adapter.add(UserItem(user))
}
}
recyclerview_newmessage.adapter=adapter
}
override fun onCancelled(p0: DatabaseError) {
TODO("Not yet implemented")
}
}
}
}
class UserItem(val user: User): Item<GroupieViewHolder>() { //HERE IS THE ERROR
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
viewHolder.itemView.username_textview_new_message.text = user.username
Picasso.get().load(user.profileImageUrl).into(viewHolder.itemView.imageview_new_message)
}
override fun getLayout(): Int {
return R.layout.user_row_new_message
}
}
Below is the error shown when i mouse hover to GroupieViewHolder