From ab26669f722e0d657520f0c0dd644b468e1a980b Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Mon, 7 Nov 2022 03:31:35 +0100 Subject: dodat poziv back-u za slike koje se prikazuju na listi objava, preuzimaju se ali se ne ucitavaju, podaci se prosledjuju na klik objave, neki atributi modela postavljeni da mogu da budu null #17 --- .../Activities/ActivitySinglePost.kt | 5 ++- .../brzodolokacije/Adapters/ShowPostsAdapter.kt | 48 ++++++++++++++++++++-- .../brzodolokacije/Fragments/FragmentShowPosts.kt | 6 ++- .../brzodolokacije/Interfaces/IBackendApi.kt | 8 ++-- .../com/example/brzodolokacije/Models/Location.kt | 7 ++-- .../java/com/example/brzodolokacije/Models/Post.kt | 2 +- 6 files changed, 60 insertions(+), 16 deletions(-) (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt index be4a73d..6a5dfe3 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.PostImageAdapter import com.example.brzodolokacije.Models.PostImage @@ -46,9 +47,9 @@ class ActivitySinglePost : AppCompatActivity() { binding.apply { tvTitle.text= post.location.name tvTitle.invalidate() - tvLocationType.text=post.location.type.name + tvLocationType.text="TODO" tvLocationType.invalidate() - tvLocationParent.text=post.location.country + tvLocationParent.text="TODO" tvLocationParent.invalidate() tvRating.text=post.ratings.toString() tvRating.invalidate() diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt index 8e6093e..134b665 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt @@ -1,24 +1,40 @@ package com.example.brzodolokacije.Adapters import android.app.Activity -import android.content.Context import android.content.Intent +import android.graphics.BitmapFactory +import android.os.AsyncTask import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Toast import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Activities.ActivitySinglePost +import com.example.brzodolokacije.Interfaces.IBackendApi +import com.example.brzodolokacije.Models.LocationType import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper import com.example.brzodolokacije.databinding.PostPreviewBinding +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Response + class ShowPostsAdapter (val activity:Activity,val items : MutableList) : RecyclerView.Adapter() { + private lateinit var token: String + private lateinit var imageApi: IBackendApi + //constructer has one argument - list of objects that need to be displayed //it is bound to xml of single item private lateinit var binding: PostPreviewBinding override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) + imageApi= RetrofitHelper.getInstance() + token= SharedPreferencesHelper.getValue("jwt", activity).toString() binding = PostPreviewBinding.inflate(inflater, parent, false) return ViewHolder(binding) } @@ -30,6 +46,7 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList { + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful) { + val image: ResponseBody = response.body()!! + binding.locationImage.setImageBitmap(BitmapFactory.decodeStream(image.byteStream())) + Toast.makeText( + activity, "prosao zahtev", Toast.LENGTH_LONG + ).show() + } else { + if (response.errorBody() != null) + Toast.makeText( + activity, + response.errorBody()!!.string(), + Toast.LENGTH_LONG + ).show(); + } + } - itemView.isClickable = true + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + activity, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index e9b4c08..9a0eedc 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -3,6 +3,7 @@ package com.example.brzodolokacije.Fragments import android.content.Context import android.content.Intent import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -43,8 +44,9 @@ class FragmentShowPosts : Fragment() { request.enqueue(object : retrofit2.Callback?> { override fun onResponse(call: Call?>, response: Response?>) { if(response.isSuccessful){ - //posts=response.body()!! - //recyclerView?.adapter=ShowPostsAdapter(requireActivity(),posts) + posts=response.body()!! + Log.d("main",posts[0].toString()) + recyclerView?.adapter=ShowPostsAdapter(requireActivity(),posts) Toast.makeText( activity, "prosao zahtev", Toast.LENGTH_LONG ).show() diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt index bcb6e13..49dda46 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt @@ -7,10 +7,7 @@ import com.example.brzodolokacije.Models.Auth.ResetPass import com.example.brzodolokacije.Models.PostPreview import okhttp3.ResponseBody import retrofit2.Call -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.Header -import retrofit2.http.POST +import retrofit2.http.* interface IBackendApi { @POST("/api/auth/login") @@ -25,6 +22,9 @@ interface IBackendApi { fun resetpass(@Body obj:ResetPass):Call @GET("/api/post") fun getPosts(@Header("Authorization") authHeader:String):Call> + @Streaming + @GET("/api/post/image/{id}") + fun getImage(@Header("Authorization") authHeader:String,@Path("id") obj:String):Call //@POST("putanja") //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt index 04bf3a1..c5fe48a 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt @@ -1,7 +1,6 @@ package com.example.brzodolokacije.Models import android.os.Parcelable -import com.example.brzodolokacije.Models.LocationType import kotlinx.android.parcel.Parcelize @Parcelize @@ -10,8 +9,8 @@ data class Location ( var name:String, var city:String, var country:String, - var adress:String, + var address:String, var latitude:Double, var longitude:Double, - var type:LocationType - ): Parcelable + var type:LocationType? +): Parcelable diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt index f667fac..9b9afaa 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt @@ -33,7 +33,7 @@ data class PostPreview ( var description:String, var views:Int, var ratings:Float, - var comments:List, + var comments:List?, var images:List ):Parcelable -- cgit v1.2.3