From 5b874e6a650e416a06168c67254a47f04ce1ed33 Mon Sep 17 00:00:00 2001 From: fadhilAmri <13521066@std.stei.itb.ac.id> Date: Mon, 1 Apr 2024 09:24:17 +0700 Subject: [PATCH] feat: intent to MapsActivity --- .../java/com/example/nerbos/MapsActivity.kt | 50 ++----------------- .../transaction/TransactionAdapter.kt | 5 ++ .../transaction/TransactionFragment.kt | 8 +++ 3 files changed, 16 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/com/example/nerbos/MapsActivity.kt b/app/src/main/java/com/example/nerbos/MapsActivity.kt index 8c00b46..fff63b1 100644 --- a/app/src/main/java/com/example/nerbos/MapsActivity.kt +++ b/app/src/main/java/com/example/nerbos/MapsActivity.kt @@ -21,13 +21,11 @@ import com.google.android.gms.location.FusedLocationProviderClient import com.google.android.gms.location.LocationServices import com.google.android.gms.maps.model.Marker -class MapsActivity : AppCompatActivity(), OnMapReadyCallback, GoogleMap.OnMarkerClickListener { +class MapsActivity : AppCompatActivity(), OnMapReadyCallback { private lateinit var mMap: GoogleMap private lateinit var binding: ActivityMapsBinding - private lateinit var currentLocation: Location - private lateinit var fusedLocationProviderClient: FusedLocationProviderClient private val permissionCode = 1 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -39,57 +37,15 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback, GoogleMap.OnMarker val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) - - fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this) } - /** - * Manipulates the map once available. - * This callback is triggered when the map is ready to be used. - * This is where we can add markers or lines, add listeners or move the camera. In this case, - * we just add a marker near Sydney, Australia. - * If Google Play services is not installed on the device, the user will be prompted to install - * it inside the SupportMapFragment. This method will only be triggered once the user has - * installed Google Play services and returned to the app. - */ + override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap - mMap.uiSettings.isZoomControlsEnabled = true - mMap.setOnMarkerClickListener ( this ) - setUpMap() - } - - private fun setUpMap() { - if (ActivityCompat.checkSelfPermission( - this, - Manifest.permission.ACCESS_FINE_LOCATION - ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission( - this, - Manifest.permission.ACCESS_COARSE_LOCATION - ) != PackageManager.PERMISSION_GRANTED - ) { - ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), permissionCode) - Log.i("Maps", "Masuk Setup") - return - } - - mMap.isMyLocationEnabled = true - fusedLocationProviderClient.lastLocation.addOnSuccessListener (this){ - location -> if(location!=null){ - currentLocation = location - val currentLatLong = LatLng(location.latitude, location.longitude) - placeMarkerOnMap(currentLatLong) - mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLong, 7f)) - } - } - } - - private fun placeMarkerOnMap(currentLatLong: LatLng) { + val currentLatLong : LatLng = LatLng(10.0,10.0) val markerOptions = MarkerOptions().position(currentLatLong).title("Current Location") mMap.addMarker(markerOptions) - Log.i("Maps", markerOptions.position.toString()) } - override fun onMarkerClick(p0: Marker) = false } \ No newline at end of file diff --git a/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt b/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt index a2a9c17..ae9cd89 100644 --- a/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt +++ b/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt @@ -19,6 +19,7 @@ class TransactionAdapter() : RecyclerView.Adapter<TransactionAdapter.Transaction // Create ViewHolder Class private var transactionList : List<Transaction> = emptyList<Transaction>() var onItemClick: ((Transaction) -> Unit)? = null + var onLocationClick: ((String) -> Unit)? = null class TransactionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ val name: TextView = itemView.findViewById(R.id.transactionName) val date: TextView = itemView.findViewById(R.id.transactionDate) @@ -54,6 +55,10 @@ class TransactionAdapter() : RecyclerView.Adapter<TransactionAdapter.Transaction holder.itemView.setOnClickListener{ onItemClick?.invoke(transactionList[position]) } + + holder.location.setOnClickListener { + onLocationClick?.invoke(holder.location.text.toString()) + } } @SuppressLint("NotifyDataSetChanged") fun setData(transactions: List<Transaction>){ diff --git a/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionFragment.kt b/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionFragment.kt index b92a7e3..dd151f8 100644 --- a/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionFragment.kt +++ b/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionFragment.kt @@ -3,6 +3,7 @@ package com.example.nerbos.fragments.transaction import android.Manifest import android.app.AlertDialog import android.app.Dialog +import android.content.Intent import android.content.pm.PackageManager import android.location.Address import android.location.Geocoder @@ -28,6 +29,7 @@ import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.example.nerbos.MapsActivity import com.example.nerbos.R import com.example.nerbos.model.Transaction import com.example.nerbos.model.TransactionCategory @@ -84,6 +86,7 @@ class TransactionFragment : Fragment() { recyclerView.layoutManager = LinearLayoutManager(context) recyclerView.adapter = transactionAdapter transactionAdapter.onItemClick = { transaction -> showModifyTransactionDialog(transaction)} + transactionAdapter.onLocationClick = {location -> showLocationOnMap(location)} // Transaction View Model transactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java] @@ -99,6 +102,11 @@ class TransactionFragment : Fragment() { return view } + private fun showLocationOnMap(location: String) { + val intent = Intent(requireActivity(), MapsActivity::class.java) + startActivity(intent) + } + private fun showAddTransactionDialog() { val dialog = Dialog(requireContext()) -- GitLab