Professional Documents
Culture Documents
Tugas Pemograman Bergerak Android Studio
Tugas Pemograman Bergerak Android Studio
NIM : 12050123966
KELAS : 4I
HASIL
SRC
BatiknusantaraAdapter.kt
package com.example.utsproject
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
val imgBatiknusantara =
view.findViewById<ImageView>(R.id.img_item_photo)
val nameBatiknusantara =
view.findViewById<TextView>(R.id.tv_item_name)
val descBatiknusantara =
view.findViewById<TextView>(R.id.tv_item_description)
imgBatiknusantara.setImageResource(batiknusantara.imgBatiknusantara)
nameBatiknusantara.text = batiknusantara.nameBatiknusantara
descBatiknusantara.text = batiknusantara.dascBatiknusantara
itemView.setOnClickListener {
listener(batiknusantara)
}
}
LayoutInflater.from(context).inflate(R.layout.item_batiknusantara, parent,
false)
)
}
DetailBatiknusantaraActivity.kt
package com.example.utsproject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
val batiknusantara =
intent.getParcelableExtra<Batiknusantara>(MainActivity.INTENT_PARCELABLE)
val imgBatiknusantara =
findViewById<ImageView>(R.id.img_item_photo)
val nameBatiknusantara = findViewById<TextView>(R.id.tv_item_name)
val descBatiknusantara =
findViewById<TextView>(R.id.tv_item_description)
imgBatiknusantara.setImageResource(batiknusantara?.imgBatiknusantara!!)
nameBatiknusantara.text = batiknusantara.nameBatiknusantara
descBatiknusantara.text = batiknusantara.dascBatiknusantara
Batiknusantara.kt
package com.example.utsproject
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Batiknusantara(
val imgBatiknusantara: Int,
val nameBatiknusantara: String,
val dascBatiknusantara: String
): Parcelable
MainActivity.kt
package com.example.utsproject
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
companion object {
val INTENT_PARCELABLE = "OBJECT_INTENT"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
)
val recyclerView = findViewById<RecyclerView>(R.id.rv_batik)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.setHasFixedSize(true)
recyclerView.adapter = BatiknusantaraAdapter (this,
batiknusantaraList){
val intent = Intent
(this,DetailBatiknusantaraActivity::class.java)
intent.putExtra (INTENT_PARCELABLE,it)
startActivity(intent)
}
}
}
activity_detail_batiknusantara.xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_batik"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/item_batiknusantara" />
</RelativeLayout>
activity_main.xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="186dp"
android:padding="8dp">
<ImageView
android:id="@+id/img_item_photo"
android:layout_width="140dp"
android:layout_height="168dp"
android:layout_marginBottom="4dp"
android:scaleType="centerCrop"
tools:src="@tools:sample/avatars" />
<TextView
android:id="@+id/tv_item_name"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="8dp"
android:layout_toEndOf="@id/img_item_photo"
android:layout_toRightOf="@id/img_item_photo"
android:fontFamily="sans-serif-condensed-medium"
android:textColor="#DC5930"
android:textSize="25sp"
android:textStyle="bold"
tools:text="@string/batiknusantara_name" />
<TextView
android:id="@+id/tv_item_description"
android:layout_width="219dp"
android:layout_height="85dp"
android:layout_below="@id/tv_item_name"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="5dp"
android:layout_marginRight="16dp"
android:layout_toEndOf="@id/img_item_photo"
android:layout_toRightOf="@id/img_item_photo"
android:ellipsize="end"
android:fontFamily="monospace"
android:maxLines="5"
android:textColor="#E69D86"
tools:text="@string/description" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
item_batiknusantara.xml
<ImageView
android:id="@+id/img_item_photo"
android:layout_width="343dp"
android:layout_height="205dp"
android:layout_marginTop="160dp"
android:scaleType="centerCrop"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
<TextView
android:id="@+id/tv_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="TextView"
android:textSize="30sp"
android:textStyle="bold"
android:fontFamily="sans-serif-condensed-medium"
android:textColor="#DC5930"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/img_item_photo" />
<TextView
android:id="@+id/tv_item_description"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="TextView"
android:fontFamily="monospace"
android:textColor="#E69D86"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.11"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_item_name" />
<Button
android:id="@+id/button"
android:layout_width="229dp"
android:layout_height="51dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_item_description"
app:layout_constraintVertical_bias="0.925"
android:text="NEXT"
android:textSize="20sp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
Color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#631C06</color>
<color name="purple_500">#B68170</color>
<color name="purple_700">#BA4C29</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
Strings.xml
<resources>
<string name="app_name">UTS PROJECT</string>
<string name="batiknusantara_name">BatikNusantara Name</string>
<string name="description">Description</string>
</resources>
build.gradle(Module: UTS_PROJECT.app)
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-parcelize'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example.utsproject"
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'
}
}
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.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
}