I want to DataBinding in the adapter, there is an ImageView I use Glide binding adapter, but when I test on my phone there is cannot find symbol errors. And I have to try to rebuild project, clean project, reopen android studio. And change ViewDataBinding to ItemGameNotReleasedBinding. but it still not works. Can anyone help me find where is wrong? Thanks a lot.
The error message.
cannot find symbol
import com.perfowl.youli.databinding.ItemGameNotReleasedBindingImpl;
symbol: class ItemGameNotReleasedBindingImpl
location: package com.perfowl.youli.databinding
The build.gradle
file
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.perfowl.youli"
minSdkVersion 15
targetSdkVersion 26
versionCode 6
versionName "1.0.6"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
dataBinding {
enabled = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.volley:volley:1.1.0'
implementation 'de.hdodenhof:circleimageview:2.2.0'
implementation 'com.google.code.gson:gson:2.8.4'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.koushikdutta.ion:ion:2.2.1'
implementation 'com.mikhaellopez:circularimageview:3.0.2'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
// Json
implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.6'
implementation 'com.fasterxml.jackson.core:jackson-core:2.9.6'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.6"
// Rounded ImageView.
implementation 'com.makeramen:roundedimageview:2.3.0'
// Glide
implementation ('com.github.bumptech.glide:glide:4.7.1') {
exclude group: "com.android.support"
}
kapt 'com.github.bumptech.glide:compiler:4.7.1'
// Kotlin data binding.
kapt "androidx.databinding:databinding-compiler:3.3.0-alpha03"
// Firebase Crashlytics
implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
transitive = true
}
// U-meng analytics.
implementation 'com.umeng.sdk:common:1.5.1'
implementation 'com.umeng.sdk:analytics:7.5.3'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
this is my ImageHelper.kr
code
package com.perfowl.youli.ui
import android.databinding.BindingAdapter
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions
import com.perfowl.youli.util.GlideApp
// Image binding
@BindingAdapter("android:src")
fun setSrc(view: ImageView, bitmap: Bitmap) {
view.setImageBitmap(bitmap)
}
@BindingAdapter("android:src")
fun setSrc(view: ImageView, resId: Int) {
view.setImageResource(resId)
}
@BindingAdapter("app:imageUrl", "app:placeHolder", "app:error")
fun loadImage(imageView: ImageView, url: String, holderDrawable: Drawable, errorDrawable: Drawable) {
var requestOptions = RequestOptions()
requestOptions = requestOptions.transforms(CenterCrop(), RoundedCorners(12))
GlideApp.with(imageView.context)
.load(url)
.centerCrop()
.apply(requestOptions)
.into(imageView)
}
this is GameNotReleasedAdapter
code
@SuppressLint("InflateParams")
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
var row = convertView
val game = getItem(position)
val binding: ViewDataBinding
if (row == null) {
row = inflater!!.inflate(R.layout.item_game_not_released, null)
// Binding data
binding = DataBindingUtil.inflate(
LayoutInflater.from(parent.context),
itemLayoutId,
parent,
false
)
}else binding = DataBindingUtil.getBinding(convertView!!)!!
binding.setVariable(variableId, game)
platformIconLayout = row!!.findViewById(R.id.platform_LL)
languageIconLayout = row.findViewById(R.id.language_LL)
// nameTextView.text = game!!.name
// glideUtil.loadImageWithGlide(game.cover, coverImageView)
if (game.platform!!.size > 0) {
setPlatformIcon(game.platform!!)
}
if (game.language!!.size > 0) {
setLanguageIcon(game.language!!)
}
return binding.root
}
This is my item_game_not_released.xml
code
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="game"
type="com.perfowl.youli.data.db.model.Game" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="115dp"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<View
android:id="@+id/background"
android:layout_width="324dp"
android:layout_height="115dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@drawable/bg_item_game" />
<TextView
android:id="@+id/released_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/bg_date"
android:lineSpacingMultiplier="2.5"
android:text="@{game.releasedDate}"
android:textColor="@color/colorWhite"
android:textSize="13sp" />
<ImageView
android:id="@+id/cover"
android:layout_width="141dp"
android:layout_height="80dp"
android:layout_marginTop="25dp"
android:contentDescription="@string/game_cover"
app:imageUrl="@{game.cover}" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@id/cover"
android:layout_alignTop="@id/cover"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_toEndOf="@id/cover"
android:layout_toRightOf="@id/cover"
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="2"
android:text="@{game.name}"
android:textColor="@color/colorTextPrimary"
android:textSize="14sp" />
<LinearLayout
android:id="@+id/language_LL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</LinearLayout>
<LinearLayout
android:id="@+id/platform_LL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/background"
android:layout_alignEnd="@id/background"
android:layout_alignRight="@id/background"
android:layout_marginBottom="5dp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:orientation="horizontal">
</LinearLayout>
</RelativeLayout>
</layout>