From 81ab02714191d0844535258e799306dc2aac99fa Mon Sep 17 00:00:00 2001 From: whk06061 Date: Tue, 11 Apr 2023 14:20:45 +0900 Subject: [PATCH 01/71] =?UTF-8?q?docs:=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=EC=99=80=20=EC=95=A1=ED=8B=B0=EB=B9=84=ED=8B=B0=20=EC=84=A4?= =?UTF-8?q?=EA=B3=84=EB=8F=84=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b23505504..2e63e82f1 100644 --- a/README.md +++ b/README.md @@ -1 +1,16 @@ -# android-movie-ticket \ No newline at end of file +# android-movie-ticket + +## 액티비티 +- MovieListActivity +- TicketingActivity +- MovieTicketActivity + +## 어댑터 +- MoviesAdapter + +## 데이터 +- Movie + - 이미지, 제목, 상영일, 러닝타임, 소개 +- TicketingInfo + - 영화 이름, 상영일, 몇명, 가격, 무슨 결제 + - 티켓 한 장의 가격은 13000원 \ No newline at end of file From 545de5112ce13026aa629daca8f467d8394ed7f9 Mon Sep 17 00:00:00 2001 From: whk06061 Date: Tue, 11 Apr 2023 14:31:04 +0900 Subject: [PATCH 02/71] =?UTF-8?q?feat:=20Movie=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/woowacourse/movie/domain/Movie.kt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 app/src/main/java/woowacourse/movie/domain/Movie.kt diff --git a/app/src/main/java/woowacourse/movie/domain/Movie.kt b/app/src/main/java/woowacourse/movie/domain/Movie.kt new file mode 100644 index 000000000..e2ec4cee6 --- /dev/null +++ b/app/src/main/java/woowacourse/movie/domain/Movie.kt @@ -0,0 +1,9 @@ +package woowacourse.movie.domain + +data class Movie( + val image: String, + val title: String, + val playingDate: String, + val runningTime: Int, + val description: String +) From 766d5463f17993c69d344191e49f8a6f4d4ecaad Mon Sep 17 00:00:00 2001 From: whk06061 Date: Tue, 11 Apr 2023 14:32:33 +0900 Subject: [PATCH 03/71] =?UTF-8?q?docs:=20=EC=84=A4=EA=B3=84=EB=8F=84=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2e63e82f1..31758650e 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,6 @@ - 이미지, 제목, 상영일, 러닝타임, 소개 - TicketingInfo - 영화 이름, 상영일, 몇명, 가격, 무슨 결제 +- Price + - 음수 체크 - 티켓 한 장의 가격은 13000원 \ No newline at end of file From 4c79b1a37363589790716711e2949c62ae43a0a1 Mon Sep 17 00:00:00 2001 From: whk06061 Date: Tue, 11 Apr 2023 14:40:30 +0900 Subject: [PATCH 04/71] =?UTF-8?q?feat:=20Price=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/woowacourse/movie/domain/Price.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 app/src/main/java/woowacourse/movie/domain/Price.kt diff --git a/app/src/main/java/woowacourse/movie/domain/Price.kt b/app/src/main/java/woowacourse/movie/domain/Price.kt new file mode 100644 index 000000000..8a105da2a --- /dev/null +++ b/app/src/main/java/woowacourse/movie/domain/Price.kt @@ -0,0 +1,12 @@ +package woowacourse.movie.domain + +data class Price(val price: Int = DEFAULT) { + init { + require(price >= 0) { throw IllegalArgumentException(MINUS_ERROR) } + } + + companion object { + private const val DEFAULT = 13000 + private const val MINUS_ERROR = "가격은 음수가 될 수 없습니다." + } +} From 4396e2c5b2871420aa6d15a27574141bf57cc291 Mon Sep 17 00:00:00 2001 From: whk06061 Date: Tue, 11 Apr 2023 14:41:07 +0900 Subject: [PATCH 05/71] =?UTF-8?q?feat:=20TicketingInfo=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt diff --git a/app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt b/app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt new file mode 100644 index 000000000..6689d22ab --- /dev/null +++ b/app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt @@ -0,0 +1,3 @@ +package woowacourse.movie.domain + +data class TicketingInfo(val name: String, val playingDate: String, val count: Int, val price: Price, val payment: String) From 282882bce92a26075eea63033bc9d77777d4362b Mon Sep 17 00:00:00 2001 From: whk06061 Date: Tue, 11 Apr 2023 15:33:51 +0900 Subject: [PATCH 06/71] =?UTF-8?q?refactor:=20TicketingInfo=20name->title?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt b/app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt index 6689d22ab..50764f147 100644 --- a/app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt +++ b/app/src/main/java/woowacourse/movie/domain/TicketingInfo.kt @@ -1,3 +1,3 @@ package woowacourse.movie.domain -data class TicketingInfo(val name: String, val playingDate: String, val count: Int, val price: Price, val payment: String) +data class TicketingInfo(val title: String, val playingDate: String, val count: Int, val price: Price, val payment: String) From 4690eaeb61bd8650fbf334c96bdb2068d5af151b Mon Sep 17 00:00:00 2001 From: whk06061 Date: Tue, 11 Apr 2023 15:35:07 +0900 Subject: [PATCH 07/71] =?UTF-8?q?feat:=20ListView,=20ListAdapter=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 8 ++- .../woowacourse/movie/MovieListActivity.kt | 11 ++++ .../woowacourse/movie/MovieListAdapter.kt | 49 +++++++++++++++++ .../woowacourse/movie/TicketingActivity.kt | 11 ++++ .../java/woowacourse/movie/domain/Movie.kt | 4 +- app/src/main/res/drawable/img.png | Bin 0 -> 1382294 bytes .../main/res/layout/activity_movie_list.xml | 13 +++++ .../main/res/layout/activity_ticketing.xml | 9 +++ app/src/main/res/layout/movie_item.xml | 52 ++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 10 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/woowacourse/movie/MovieListActivity.kt create mode 100644 app/src/main/java/woowacourse/movie/MovieListAdapter.kt create mode 100644 app/src/main/java/woowacourse/movie/TicketingActivity.kt create mode 100644 app/src/main/res/drawable/img.png create mode 100644 app/src/main/res/layout/activity_movie_list.xml create mode 100644 app/src/main/res/layout/activity_ticketing.xml create mode 100644 app/src/main/res/layout/movie_item.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1ad1a01d9..e51f81d60 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,12 @@ android:supportsRtl="true" android:theme="@style/Theme.Movie" tools:targetApi="31"> + + @@ -22,4 +28,4 @@ - + \ No newline at end of file diff --git a/app/src/main/java/woowacourse/movie/MovieListActivity.kt b/app/src/main/java/woowacourse/movie/MovieListActivity.kt new file mode 100644 index 000000000..ad0830cb0 --- /dev/null +++ b/app/src/main/java/woowacourse/movie/MovieListActivity.kt @@ -0,0 +1,11 @@ +package woowacourse.movie + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity + +class MovieListActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_movie_list) + } +} diff --git a/app/src/main/java/woowacourse/movie/MovieListAdapter.kt b/app/src/main/java/woowacourse/movie/MovieListAdapter.kt new file mode 100644 index 000000000..658365adf --- /dev/null +++ b/app/src/main/java/woowacourse/movie/MovieListAdapter.kt @@ -0,0 +1,49 @@ +package woowacourse.movie + +import android.content.Context +import android.content.Intent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.Button +import android.widget.ImageView +import android.widget.TextView +import woowacourse.movie.domain.Movie + +class MovieListAdapter(private val context: Context, private val movies: List) : BaseAdapter() { + override fun getCount(): Int { + return movies.size + } + + override fun getItem(position: Int): Any { + return movies[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view = LayoutInflater.from(context).inflate(R.layout.movie_item, null) + val movie = getItem(position) as Movie + val image = view.findViewById(R.id.img_movie) + val title = view.findViewById(R.id.text_title) + val playingDate = view.findViewById(R.id.text_playing_date) + val runningTime = view.findViewById(R.id.text_running_time) + val ticketingButton = view.findViewById