diff --git a/app/build.gradle b/app/build.gradle index 41da73f..a595786 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,6 +15,9 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + androidExtensions { + experimental = true + } buildTypes { release { @@ -30,6 +33,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.3.1' implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.recyclerview:recyclerview:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 178d0a7..fd72016 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/androidpractice2020/Film.kt b/app/src/main/java/com/example/androidpractice2020/Film.kt new file mode 100644 index 0000000..50cdad0 --- /dev/null +++ b/app/src/main/java/com/example/androidpractice2020/Film.kt @@ -0,0 +1,6 @@ +package com.example.androidpractice2020 + + +data class Film( + val id: Int, val name: String, val text: String, var imageView: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/example/androidpractice2020/FilmAdapter.kt b/app/src/main/java/com/example/androidpractice2020/FilmAdapter.kt new file mode 100644 index 0000000..fd15c90 --- /dev/null +++ b/app/src/main/java/com/example/androidpractice2020/FilmAdapter.kt @@ -0,0 +1,14 @@ +package com.example.androidpractice2020 + +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +class FilmAdapter( + private var list: List, + private var itemClick: (Int) -> Unit +) : RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FilmHolder = FilmHolder.create(parent, itemClick) + + override fun onBindViewHolder(holder: FilmHolder, position: Int) = holder.bind(list[position]) + + override fun getItemCount(): Int = list.size +} \ No newline at end of file diff --git a/app/src/main/java/com/example/androidpractice2020/FilmHolder.kt b/app/src/main/java/com/example/androidpractice2020/FilmHolder.kt new file mode 100644 index 0000000..1be1a2f --- /dev/null +++ b/app/src/main/java/com/example/androidpractice2020/FilmHolder.kt @@ -0,0 +1,29 @@ +package com.example.androidpractice2020 + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import kotlinx.android.extensions.LayoutContainer +import kotlinx.android.synthetic.main.film_item.* + +class FilmHolder( + override val containerView: View, + var itemClick: (Int) -> Unit +) : RecyclerView.ViewHolder(containerView), LayoutContainer { + fun bind(film: Film) { + film_name.text = film.name + film_image.setImageResource(film.imageView) + itemView.setOnClickListener { + itemClick(film.id) + } + } + + companion object { + fun create(parent: ViewGroup, itemClick: (Int) -> Unit): FilmHolder = + FilmHolder( + LayoutInflater.from(parent.context).inflate(R.layout.film_item, parent, false), + itemClick + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/androidpractice2020/FilmRepository.kt b/app/src/main/java/com/example/androidpractice2020/FilmRepository.kt new file mode 100644 index 0000000..f7e602c --- /dev/null +++ b/app/src/main/java/com/example/androidpractice2020/FilmRepository.kt @@ -0,0 +1,13 @@ +package com.example.androidpractice2020 + +class FilmRepository { + val arraylist = listOf( + Film(0, "Довод", "Главный герой — секретный агент, который проходит жестокий тест на надежность и присоединяется к невероятной миссии.",R.drawable.dovod), + Film(1,"Бэтмен", "По словам автора, это будет самая молодая версия героя, который прошёл через личную трагедию, и всё, что он делает, будет его реакцией на это.", R.drawable.batman), + Film(2, "Джокер", "Американский психологический триллер режиссёра Тодда Филлипса по сценарию, написанному Филлипсом совместно со Скоттом Сильвером.", R.drawable.joker) + ) + + fun find(id: Int): Film { + return this.arraylist[id] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/androidpractice2020/InfoFilmActivity.kt b/app/src/main/java/com/example/androidpractice2020/InfoFilmActivity.kt new file mode 100644 index 0000000..8c0aa57 --- /dev/null +++ b/app/src/main/java/com/example/androidpractice2020/InfoFilmActivity.kt @@ -0,0 +1,20 @@ +package com.example.androidpractice2020 + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import kotlinx.android.synthetic.main.film_info.* + +class InfoFilmActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.film_info) + val id = intent.extras?.getInt("id") + val film = id?.let { FilmRepository().find(it) } + if (film != null) { + imageView.setImageResource(film.imageView) + } + textView6.text = id.toString() + textView3.text = film?.name + textView5.text = film?.text + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/androidpractice2020/MainActivity.kt b/app/src/main/java/com/example/androidpractice2020/MainActivity.kt index b0b517d..680043f 100644 --- a/app/src/main/java/com/example/androidpractice2020/MainActivity.kt +++ b/app/src/main/java/com/example/androidpractice2020/MainActivity.kt @@ -1,11 +1,21 @@ package com.example.androidpractice2020 +import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import androidx.recyclerview.widget.DividerItemDecoration +import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + val list = list_film + list.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL)) + list.adapter = FilmAdapter(FilmRepository().arraylist) { + val intent = Intent(this, InfoFilmActivity::class.java) + intent.putExtra("id", it) + startActivity(intent) + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/batman.jpg b/app/src/main/res/drawable-v24/batman.jpg new file mode 100644 index 0000000..b2a2bcd Binary files /dev/null and b/app/src/main/res/drawable-v24/batman.jpg differ diff --git a/app/src/main/res/drawable-v24/dovod.jpg b/app/src/main/res/drawable-v24/dovod.jpg new file mode 100644 index 0000000..8c52a9b Binary files /dev/null and b/app/src/main/res/drawable-v24/dovod.jpg differ diff --git a/app/src/main/res/drawable-v24/joker.jpg b/app/src/main/res/drawable-v24/joker.jpg new file mode 100644 index 0000000..226dfd8 Binary files /dev/null and b/app/src/main/res/drawable-v24/joker.jpg differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4fc2444..e1a9178 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,13 +6,12 @@ android:layout_height="match_parent" tools:context=".MainActivity"> - + \ No newline at end of file diff --git a/app/src/main/res/layout/film_info.xml b/app/src/main/res/layout/film_info.xml new file mode 100644 index 0000000..60ecbbc --- /dev/null +++ b/app/src/main/res/layout/film_info.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/film_item.xml b/app/src/main/res/layout/film_item.xml new file mode 100644 index 0000000..756037b --- /dev/null +++ b/app/src/main/res/layout/film_item.xml @@ -0,0 +1,31 @@ + + + + + + + \ No newline at end of file