Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Edistynyt mobiiliohjelmointi, 12.4.2023
- // Asennetaan Directus Harjoitus 3 ohjeen mukaisesti omalle tietokoneelle.
- // Kun data liikkuu oikein access_tokenin avulla myös nettiselaimesta käsin, on tehtävä hyvällä mallilla seuraavia välivaiheita varten.
- // method GET
- // esim. http://localhost:8055/items/feedback?access_token=OMA_ACCESS_TOKEN
- pitäisi antaa dataa, esim:
- {"data":[{"id":1,"name":"Tester Person","location":"Rovaniemi","value":"Does this app work at the moment?"},{"id":2,"name":"Another Tester","location":"Internet","value":"How about this message, does this work?"}]}
- // jos halutaan vain yksi data, voidaan suodattaa id:llä, esim. id:llä 2:
- method GET
- http://localhost:8055/items/feedback/2?access_token=OMA_ACCESS_TOKEN
- // datan lähettäminen Directusiin:
- URL:
- http://localhost:8055/items/feedback?access_token=OMA_ACCESS_TOKEN
- Method: POST
- Body: JSON:
- {
- "name": "Internet Insomnia",
- "location": "Somewhere",
- "value": "Insomnia says hello!"
- }
- // datan muokkaaminen Directusissa:
- // muista antaa URLissa ID mitä muokataan! tässä tapauksessa 2
- http://localhost:8055/items/feedback/2?access_token=OMA_ACCESS_TOKEN
- Method: PATCH (joskus muissa rajapinnoissa: PUT)
- Body: JSON:
- {
- "name": "Muokattu Nimi",
- "location": "Muokkaamo",
- "value": "This value has been UPDATED!"
- }
- // datan poistaminen Directusista
- // muista antaa poistettava id URL:ssa, tässä tapauksessa 3
- URL: http://localhost:8055/items/feedback/3?access_token=OMA_ACCESSTOKEN
- Method: DELETE
- Ei bodya
- // ANDROID-projekti
- // lisätään tulevaa varten uusi import gradleen:
- implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
- // json2kt.comia varten tarvitaan yhden feedbackin JSON-data
- // huom: Directus antaa datan "wräpättynä" data-kenttään:
- {"data":{"id":2,"name":"Another Tester","location":"Internet","value":"How about this message, does this work?"}}
- // tämän vuoksi emme voi käyttää tätä suoraan json2kt:ssa, vaan joudumme ottamaan yksittäisen feedbackin JSONin, eli tässä tapauksessa:
- {"id":2,"name":"Another Tester","location":"Internet","value":"How about this message, does this work?"}
- // tehdään tämän pohjalta Android-projektiin Feedback.kt -luokka käyttämällä json2kt.comia, ja kopioidaan se kansioon datatypes -> feedback. tee feedback kansio, mikäli se puuttuu (oikealla klikkaus -> new -> package -> nimeksi feedback)
- Tehdään kaksi uutta fragmentia, lisätään molemmat päävalikkoon, ja otetaan kummassakin binding layer käyttöön, esim:
- FeedbackReadFragment
- ja
- FeedbBackSendFragment
- esim:
- class FeedbackReadFragment : Fragment() {
- private var _binding: FragmentFeedbackReadBinding? = null
- // This property is only valid between onCreateView and
- // onDestroyView.
- private val binding get() = _binding!!
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- _binding = FragmentFeedbackReadBinding.inflate(inflater, container, false)
- val root: View = binding.root
- return root
- }
- override fun onDestroyView() {
- super.onDestroyView()
- _binding = null
- }
- }
- esim:
- class FeedbackSendFragment : Fragment() {
- private var _binding: FragmentFeedbackSendBinding? = null
- // This property is only valid between onCreateView and
- // onDestroyView.
- private val binding get() = _binding!!
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- _binding = FragmentFeedbackSendBinding.inflate(inflater, container, false)
- val root: View = binding.root
- return root
- }
- override fun onDestroyView() {
- super.onDestroyView()
- _binding = null
- }
- }
- // FeedbackReadFragmentin ulkoasu, lisätään ListView + sille id:
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".FeedbackReadFragment">
- <ListView
- android:id="@+id/listView_feedbacks"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </FrameLayout>
- // FeedbackSendFragmentin ulkoasu,
- // huom: EditTexteissä tulee olla minHeight vähintään 48dp, koska muuten se ei ole saavutettavuuden näkökulmasta hyvä
- // kuitenkin jostain syystä Androidissa EditTextin oletuskorkeus on 45dp
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:layout_margin="10dp"
- tools:context=".FeedbackSendFragment">
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="20dp"
- android:text="Send us feedback!"
- android:textColor="#7539D8"
- android:textSize="30sp"
- android:textStyle="bold" />
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="Your name:"
- android:textStyle="bold" />
- <EditText
- android:id="@+id/editText_feedback_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ems="10"
- android:minHeight="48dp"
- android:hint="Who are you?"
- android:inputType="textPersonName" />
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:textStyle="bold"
- android:text="Your location:" />
- <EditText
- android:id="@+id/editText_feedback_location"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ems="10"
- android:minHeight="48dp"
- android:hint="Where are you?"
- android:inputType="textPersonName" />
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:textStyle="bold"
- android:text="Your feedback:" />
- <EditText
- android:id="@+id/editText_feedback_value"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ems="10"
- android:minHeight="48dp"
- android:hint="Please write your thoughts here..."
- android:inputType="textPersonName" />
- <Button
- android:id="@+id/button_send_feedback"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:text="SEND FEEDBACK" />
- </LinearLayout>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement