diff --git a/RecyclerViewWithHeader/.idea/codeStyleSettings.xml b/RecyclerViewWithHeader/.idea/codeStyleSettings.xml new file mode 100644 index 0000000..25a8b87 --- /dev/null +++ b/RecyclerViewWithHeader/.idea/codeStyleSettings.xml @@ -0,0 +1,229 @@ + + + + + + \ No newline at end of file diff --git a/RecyclerViewWithHeader/README.md b/RecyclerViewWithHeader/README.md index a644534..f71bf2e 100644 --- a/RecyclerViewWithHeader/README.md +++ b/RecyclerViewWithHeader/README.md @@ -1 +1,24 @@ # RecyclerView with header +### abstract class for ++ recyclerview with header ++ handling click event on each item using itemClickListener interface ++ manage a list using Realm + +## Android Developer Version Info ++ Build Tool Version = 25.0.3 ++ Compile SDK Version = 25 ++ Target SDK Version = 25 ++ Android Studio 3.0 Beta 2 + +## User Library Version ++ Kotlin 1.1.4-2 ++ Realm 0.88.2 ++ support library Version = 25.3.1 + +## Dependencies +empty + +## Guide +#### Step1. Create Item class extends RealmObject +#### Step2. Create Item layout and ItemHolder which extends BaseViewHolder +#### Step3. Create Adapter which extends ListAdapterWithHeader diff --git a/RecyclerViewWithHeader/app/build.gradle b/RecyclerViewWithHeader/app/build.gradle index 2721722..b9e1d4a 100644 --- a/RecyclerViewWithHeader/app/build.gradle +++ b/RecyclerViewWithHeader/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' // 코틀린 플러그인을 적용합니다. +apply plugin: 'kotlin-android' // 코틀린 플러그인을 적용 apply plugin: 'kotlin-android-extensions' // 익스텐션 플러그인 적용 +apply plugin: 'realm-android' // Realm 플러그인 적용 android { compileSdkVersion 25 diff --git a/RecyclerViewWithHeader/app/src/main/AndroidManifest.xml b/RecyclerViewWithHeader/app/src/main/AndroidManifest.xml index f5b16e2..f1a3e83 100644 --- a/RecyclerViewWithHeader/app/src/main/AndroidManifest.xml +++ b/RecyclerViewWithHeader/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ package="com.example.lf_wannabe.recyclerviewwithheader" > + + \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/adapter/ListAdapterWithHeader.kt b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/adapter/ListAdapterWithHeader.kt index f44528c..44c3665 100644 --- a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/adapter/ListAdapterWithHeader.kt +++ b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/adapter/ListAdapterWithHeader.kt @@ -2,46 +2,35 @@ package com.tutorial.mim.recyclerview_header.adapter import android.support.v4.app.FragmentActivity import android.support.v7.widget.RecyclerView -import android.view.ViewGroup import com.tutorial.mim.recyclerview_header.model.Item - -import android.view.LayoutInflater -import com.example.lf_wannabe.recyclerviewwithheader.R -import com.tutorial.mim.recyclerview_header.model.ItemHolder +import android.view.View +import io.realm.RealmObject +import io.realm.RealmResults /** * Created by lf_wannabe on 26/08/2017. */ -abstract class ListAdapterWithHeader(val activity: FragmentActivity, protected val hasHeader: Boolean) - : RecyclerView.Adapter(){ - - private val HEADER_TYPE: Int = 0 - private val ITEM_TYPE: Int = 1 +abstract class ListAdapterWithHeader( + val activity: FragmentActivity, protected val hasHeader: Boolean) + : RecyclerView.Adapter() { - private var list: ArrayList = ArrayList() + protected val HEADER_TYPE: Int = 0 + protected val ITEM_TYPE: Int = 1 - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder - = when(viewType){ - HEADER_TYPE -> createHeaderView(activity.layoutInflater, parent) - else -> ItemHolder(activity.layoutInflater.inflate(R.layout.list_content, parent, false)) - } + private lateinit var list: RealmResults - protected abstract fun createHeaderView(layoutInflater: LayoutInflater, parent: ViewGroup): RecyclerView.ViewHolder - - protected abstract fun onBindHeaderView(holder: RecyclerView.ViewHolder, position: Int) + companion object { + lateinit var mOnItemClickListener: OnItemClickListener + } - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - when (getItemViewType(position)) { - HEADER_TYPE -> onBindHeaderView(holder, position) - ITEM_TYPE -> (holder as ItemHolder).onBind(getItem(position)) - } + interface OnItemClickListener { + fun onItemClick(v: View, position: Int) {} } - fun setData(list: ArrayList){ - // null 체크 필요없나 ? - this.list = list + fun setOnItemClickListener(onItemClickListener: OnItemClickListener) { + mOnItemClickListener = onItemClickListener } override fun getItemViewType(position: Int): Int { @@ -49,9 +38,13 @@ abstract class ListAdapterWithHeader(val activity: FragmentActivity, protected v } override fun getItemCount(): Int { - return if (list != null) (list as ArrayList).size + (if (hasHeader) 1 else 0) else if (hasHeader) 1 else 0 + return list.size + if (hasHeader) 1 else 0 } - private fun getItem(position: Int): Item? = list?.get(position - 1) + protected fun getItem(position: Int): T = list[position - if (hasHeader) 1 else 0] + fun setData(list: RealmResults) { + this.list = list + notifyDataSetChanged() + } } \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/ex/ExAdapter.kt b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/ex/ExAdapter.kt index 619cdfa..8b8e715 100644 --- a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/ex/ExAdapter.kt +++ b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/ex/ExAdapter.kt @@ -6,22 +6,71 @@ import android.view.LayoutInflater import android.view.ViewGroup import com.example.lf_wannabe.recyclerviewwithheader.R import com.tutorial.mim.recyclerview_header.adapter.ListAdapterWithHeader -import com.tutorial.mim.recyclerview_header.model.HeaderHolder +import com.tutorial.mim.recyclerview_header.model.BaseViewHolder import com.tutorial.mim.recyclerview_header.model.Item +import com.tutorial.mim.recyclerview_header.model.ItemHolder +import io.realm.RealmResults /** * Created by lf_wannabe on 27/08/2017. */ class ExAdapter(ac: FragmentActivity, hasHeader: Boolean, item: Item) - : ListAdapterWithHeader(ac, hasHeader) { + : ListAdapterWithHeader(ac, hasHeader) { var mItem: Item = item - override fun createHeaderView(layoutInflater: LayoutInflater, parent: ViewGroup) - : RecyclerView.ViewHolder - = HeaderHolder(layoutInflater.inflate(R.layout.list_header, parent, false)) + override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ItemHolder = + when (viewType) { + HEADER_TYPE -> ItemHolder(LayoutInflater.from(parent!!.context) + .inflate(R.layout.list_header, parent, false)) + else -> ItemHolder(LayoutInflater.from(parent!!.context) + .inflate(R.layout.list_content, parent, false)) + } - override fun onBindHeaderView(holder: RecyclerView.ViewHolder, position: Int) { - (holder as HeaderHolder).onBind(mItem) + override fun onBindViewHolder(holder: ItemHolder?, position: Int) { + when (getItemViewType(position)) { + HEADER_TYPE -> + holder!!.onBindHeader(mItem) + ITEM_TYPE -> { + with(holder!!){ + onBind(getItem(position)) + + // setOnClickListener를 부모에게 숨기고 싶다 + holder.itemView.setOnClickListener { + view -> + if (mOnItemClickListener != null) { + mOnItemClickListener.onItemClick(view, layoutPosition) + } + } + } + } + } } +// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder = +// when (viewType) { +// HEADER_TYPE -> ItemHolder(LayoutInflater.from(parent.context) +// .inflate(R.layout.list_header, parent, false)) +// else -> ItemHolder(LayoutInflater.from(parent.context) +// .inflate(R.layout.list_content, parent, false)) +// } +// +// override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { +// when (getItemViewType(position)) { +// HEADER_TYPE -> +// (holder as ItemHolder).onBindHeader(mItem) +// ITEM_TYPE -> { +// with(holder as ItemHolder){ +// onBind(getItem(position) as Item) +// +// // setOnClickListener를 부모에게 숨기고 싶다 +// holder.itemView.setOnClickListener { +// view -> +// if (mOnItemClickListener != null) { +// mOnItemClickListener.onItemClick(view, layoutPosition) +// } +// } +// } +// } +// } +// } } \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/BaseViewHolder.kt b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/BaseViewHolder.kt index 0f033b3..c83e339 100644 --- a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/BaseViewHolder.kt +++ b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/BaseViewHolder.kt @@ -3,13 +3,15 @@ package com.tutorial.mim.recyclerview_header.model import android.content.Context import android.support.v7.widget.RecyclerView import android.view.View +import io.realm.RealmObject /** * Created by lf_wannabe on 27/08/2017. */ -abstract class BaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { +abstract class BaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ - abstract fun onBind(item: Item?) + abstract fun onBind(item: T?) + + abstract fun onBindHeader(header: H?) - abstract fun onBind(data: Item, onClickListener: View.OnClickListener, context: Context) } diff --git a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/HeaderHolder.kt b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/HeaderHolder.kt deleted file mode 100644 index ef90865..0000000 --- a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/HeaderHolder.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.tutorial.mim.recyclerview_header.model - -import android.content.Context -import android.view.View -import kotlinx.android.synthetic.main.list_header.view.* - -/** - * Created by lf_wannabe on 27/08/2017. - */ -class HeaderHolder(itemView: View) : BaseViewHolder(itemView){ - - override fun onBind(item: Item?) { - itemView.header.text = item?.title - } - - override fun onBind(data: Item, onClickListener: View.OnClickListener, context: Context) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } -} \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/Item.kt b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/Item.kt index 44ebf8d..0a2f72d 100644 --- a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/Item.kt +++ b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/Item.kt @@ -1,10 +1,12 @@ package com.tutorial.mim.recyclerview_header.model +import io.realm.RealmObject + /** * Created by lf_wannabe on 27/08/2017. */ -class Item ( - var num: Int = 0, - var title: String = "TITLE", - var content: String = "CONTENT" -) \ No newline at end of file +open class Item( + open var num: Int = 0, + open var title: String = "TITLE", + open var content: String = "CONTENT" +): RealmObject() \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/ItemHolder.kt b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/ItemHolder.kt index 2e11511..e671e5e 100644 --- a/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/ItemHolder.kt +++ b/RecyclerViewWithHeader/app/src/main/Kotlin/com/tutorial/mim/recyclerview_header/model/ItemHolder.kt @@ -1,13 +1,13 @@ package com.tutorial.mim.recyclerview_header.model -import android.content.Context import android.view.View import kotlinx.android.synthetic.main.list_content.view.* +import kotlinx.android.synthetic.main.list_header.view.* /** * Created by lf_wannabe on 27/08/2017. */ -class ItemHolder(itemView: View) : BaseViewHolder(itemView) { +class ItemHolder(itemView: View) : BaseViewHolder(itemView) { override fun onBind(item: Item?) { with(itemView){ number.text = item?.num.toString() @@ -15,7 +15,7 @@ class ItemHolder(itemView: View) : BaseViewHolder(itemView) { } } - override fun onBind(data: Item, onClickListener: View.OnClickListener, context: Context) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + override fun onBindHeader(header: Item?) { + itemView.header.text = header?.title } } \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/BaseApplication.kt b/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/BaseApplication.kt new file mode 100644 index 0000000..f50652e --- /dev/null +++ b/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/BaseApplication.kt @@ -0,0 +1,26 @@ +package com.example.lf_wannabe.recyclerviewwithheader + +import android.app.Application +import io.realm.Realm +import io.realm.RealmConfiguration +import kotlin.properties.Delegates + +/** + * Created by lf_wannabe on 28/08/2017. + */ +class BaseApplication: Application() { + +// companion object { +// var realm: Realm by Delegates.notNull() +// var realmConfig: RealmConfiguration by Delegates.notNull() +// } + override fun onCreate() { + super.onCreate() + Realm.init(this) + +// realmConfig = RealmConfiguration.Builder(this).build() +// realm = Realm.getInstance(realmConfig) + + } + +} \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/MainActivity.kt b/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/MainActivity.kt index 21e08a6..d3e76d4 100644 --- a/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/MainActivity.kt +++ b/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/MainActivity.kt @@ -3,31 +3,61 @@ package com.example.lf_wannabe.recyclerviewwithheader import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.support.v7.widget.LinearLayoutManager +import android.view.View +import android.widget.Toast +import com.tutorial.mim.recyclerview_header.adapter.ListAdapterWithHeader import com.tutorial.mim.recyclerview_header.ex.ExAdapter import com.tutorial.mim.recyclerview_header.model.Item +import io.realm.Realm import kotlinx.android.synthetic.main.activity_main.* +import kotlin.properties.Delegates class MainActivity : AppCompatActivity() { + var i: Int = 1 + + // by Delegates.notNull() => 멤버변수가 클래스 생성될때 초기화 되지않지만 변수 접근 전에 반드시 초기화되어야 한다! + private var realm: Realm by Delegates.notNull() + + var vAdapter: ExAdapter by Delegates.notNull() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - var vList: ArrayList = ArrayList() - for(i in 1..100){ - vList.add(Item(i, "TITLE", "CONTENT")) - } + realm = Realm.getDefaultInstance() - var vAdapter: ExAdapter = ExAdapter(this, true, Item()) - with(vAdapter){ - setData(vList) - } + i = realm.where(Item::class.java).findAll().size + 1 + + vAdapter = ExAdapter(this, true, Item()) + vAdapter.setOnItemClickListener(object : ListAdapterWithHeader.OnItemClickListener { + override fun onItemClick(v: View, position: Int) { + Toast.makeText(applicationContext, position.toString() + "TOUCHED", Toast.LENGTH_SHORT).show() + } + }) with(list){ setHasFixedSize(false) adapter = vAdapter layoutManager = LinearLayoutManager(this@MainActivity) } - } + addBtn.setOnClickListener{ +// startActivity(Intent(this, PopupActivity::class.java)) + + realm.beginTransaction() + var tmp = realm.createObject(Item::class.java) + tmp.num = i++ + tmp.title = "TITLE" + tmp.content = "CONTENT" + realm.commitTransaction() + + vAdapter.setData(realm.where(Item::class.java).findAll()) + } + + } + override fun onResume() { + super.onResume() + vAdapter.setData(realm.where(Item::class.java).findAll()) + } } diff --git a/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/PopupActivity.kt b/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/PopupActivity.kt new file mode 100644 index 0000000..ac1b1fa --- /dev/null +++ b/RecyclerViewWithHeader/app/src/main/java/com/example/lf_wannabe/recyclerviewwithheader/PopupActivity.kt @@ -0,0 +1,17 @@ +package com.example.lf_wannabe.recyclerviewwithheader + +import android.os.Bundle +import android.os.PersistableBundle +import android.support.v7.app.AppCompatActivity + +/** + * Created by lf_wannabe on 30/08/2017. + */ +class PopupActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_popup) + + } +} \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/res/layout/activity_main.xml b/RecyclerViewWithHeader/app/src/main/res/layout/activity_main.xml index 230c482..e2ff269 100644 --- a/RecyclerViewWithHeader/app/src/main/res/layout/activity_main.xml +++ b/RecyclerViewWithHeader/app/src/main/res/layout/activity_main.xml @@ -1,17 +1,30 @@ - + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="16dp" + android:layout_marginStart="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent"> + + diff --git a/RecyclerViewWithHeader/app/src/main/res/layout/activity_popup.xml b/RecyclerViewWithHeader/app/src/main/res/layout/activity_popup.xml new file mode 100644 index 0000000..d5ee7ba --- /dev/null +++ b/RecyclerViewWithHeader/app/src/main/res/layout/activity_popup.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RecyclerViewWithHeader/app/src/main/res/layout/list_content.xml b/RecyclerViewWithHeader/app/src/main/res/layout/list_content.xml index 7879e82..7cba304 100644 --- a/RecyclerViewWithHeader/app/src/main/res/layout/list_content.xml +++ b/RecyclerViewWithHeader/app/src/main/res/layout/list_content.xml @@ -1,18 +1,31 @@ - + + android:layout_height="wrap_content" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + - \ No newline at end of file + + diff --git a/RecyclerViewWithHeader/app/src/main/res/layout/list_header.xml b/RecyclerViewWithHeader/app/src/main/res/layout/list_header.xml index 45258ea..846c938 100644 --- a/RecyclerViewWithHeader/app/src/main/res/layout/list_header.xml +++ b/RecyclerViewWithHeader/app/src/main/res/layout/list_header.xml @@ -1,10 +1,11 @@ + android:layout_width="match_parent" + android:layout_height="60dp"> diff --git a/RecyclerViewWithHeader/app/src/main/res/mipmap-mdpi/ic_add_circle_black_24dp.png b/RecyclerViewWithHeader/app/src/main/res/mipmap-mdpi/ic_add_circle_black_24dp.png new file mode 100644 index 0000000..ac376d0 Binary files /dev/null and b/RecyclerViewWithHeader/app/src/main/res/mipmap-mdpi/ic_add_circle_black_24dp.png differ diff --git a/RecyclerViewWithHeader/app/src/main/res/mipmap-mdpi/ic_delete_black_24dp.png b/RecyclerViewWithHeader/app/src/main/res/mipmap-mdpi/ic_delete_black_24dp.png new file mode 100644 index 0000000..999aa4c Binary files /dev/null and b/RecyclerViewWithHeader/app/src/main/res/mipmap-mdpi/ic_delete_black_24dp.png differ diff --git a/RecyclerViewWithHeader/app/src/main/res/values/colors.xml b/RecyclerViewWithHeader/app/src/main/res/values/colors.xml index 3ab3e9c..12d341f 100644 --- a/RecyclerViewWithHeader/app/src/main/res/values/colors.xml +++ b/RecyclerViewWithHeader/app/src/main/res/values/colors.xml @@ -3,4 +3,10 @@ #3F51B5 #303F9F #FF4081 + + #ffffff + #f5f5f5 + + #6d6d6d + #1b1b1b diff --git a/RecyclerViewWithHeader/app/src/main/res/values/strings.xml b/RecyclerViewWithHeader/app/src/main/res/values/strings.xml index 950cfa8..320519a 100644 --- a/RecyclerViewWithHeader/app/src/main/res/values/strings.xml +++ b/RecyclerViewWithHeader/app/src/main/res/values/strings.xml @@ -1,3 +1,15 @@ RecyclerViewWithHeader + + + User Info + Android O + BirthDay + Favorit + Age + City + AUG 23 + Soccer + 25 + Soeul diff --git a/RecyclerViewWithHeader/app/src/main/res/values/styles.xml b/RecyclerViewWithHeader/app/src/main/res/values/styles.xml index 5885930..a64e561 100644 --- a/RecyclerViewWithHeader/app/src/main/res/values/styles.xml +++ b/RecyclerViewWithHeader/app/src/main/res/values/styles.xml @@ -8,4 +8,25 @@ @color/colorAccent + + + + + + + + diff --git a/RecyclerViewWithHeader/build.gradle b/RecyclerViewWithHeader/build.gradle index 811b84a..63b0edc 100644 --- a/RecyclerViewWithHeader/build.gradle +++ b/RecyclerViewWithHeader/build.gradle @@ -6,8 +6,9 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.0-beta2' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.4-2' // 코틀린 플러그인 적용 + classpath "io.realm:realm-gradle-plugin:3.5.0" // Realm for Kotlin플러그인 적용 // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/RecyclerViewWithHeader/gradle/wrapper/gradle-wrapper.properties b/RecyclerViewWithHeader/gradle/wrapper/gradle-wrapper.properties index 9262ef9..6105d28 100644 --- a/RecyclerViewWithHeader/gradle/wrapper/gradle-wrapper.properties +++ b/RecyclerViewWithHeader/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Aug 27 15:41:53 KST 2017 +#Mon Aug 28 22:31:21 KST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip