aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsGridViewAdapter.kt30
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt33
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt4
3 files changed, 45 insertions, 22 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsGridViewAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsGridViewAdapter.kt
index dbe9e7d..f837afd 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsGridViewAdapter.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsGridViewAdapter.kt
@@ -3,12 +3,12 @@ package com.example.brzodolokacije.Adapters
import android.app.Activity
import android.content.Intent
import android.os.Bundle
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
-import android.widget.TextView
+import androidx.paging.PagingDataAdapter
+import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.example.brzodolokacije.Activities.ActivitySinglePost
@@ -17,8 +17,21 @@ import com.example.brzodolokacije.Models.PostPreview
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
-class ShowPostsGridViewAdapter(var postPreview:MutableList<PostPreview>, val activity: Activity):
- RecyclerView.Adapter<ShowPostsGridViewAdapter.PostViewHolder1>() {
+class ShowPostsGridViewAdapter(val activity: Activity,var postPreview:MutableList<PostPreview>?=null):
+ PagingDataAdapter<PostPreview,ShowPostsGridViewAdapter.PostViewHolder1>(REPO_COMPARATOR) {
+
+ companion object{
+ private val REPO_COMPARATOR=object: DiffUtil.ItemCallback<PostPreview>(){
+ override fun areContentsTheSame(oldItem: PostPreview, newItem: PostPreview): Boolean {
+ return oldItem._id==newItem._id
+ }
+
+ override fun areItemsTheSame(oldItem: PostPreview, newItem: PostPreview): Boolean {
+ return oldItem._id==newItem._id
+ }
+ }
+ }
+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PostViewHolder1 {
val view=
LayoutInflater.from(parent.context).inflate(R.layout.post_item_grid_view,parent,false)
@@ -28,15 +41,12 @@ class ShowPostsGridViewAdapter(var postPreview:MutableList<PostPreview>, val act
holder.itemView.setOnClickListener {
val intent: Intent = Intent(activity, ActivitySinglePost::class.java)
var b= Bundle()
- postPreview[position].location.type= LocationType.ADA
- b.putParcelable("selectedPost", postPreview[position])
+ getItem(position)!!.location.type= LocationType.ADA
+ b.putParcelable("selectedPost", getItem(position)!!)
intent.putExtras(b)
activity.startActivity(intent)
}
- return holder.bindView(postPreview[position] )
- }
- override fun getItemCount(): Int {
- return postPreview.size
+ return holder.bindView(getItem(position)!! )
}
inner class PostViewHolder1(view: View): RecyclerView.ViewHolder(view){
private val background:com.google.android.material.imageview.ShapeableImageView=view.findViewById(
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 042e596..8bcbd72 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
@@ -1,6 +1,5 @@
package com.example.brzodolokacije.Fragments
-import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
@@ -8,21 +7,20 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.*
-import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
+import androidx.paging.PagingData
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
-import com.example.brzodolokacije.Activities.ActivityAddPost
-import com.example.brzodolokacije.Activities.ChatActivity
import com.example.brzodolokacije.Activities.NavigationActivity
import com.example.brzodolokacije.Adapters.ShowPostsAdapter
import com.example.brzodolokacije.Adapters.ShowPostsGridViewAdapter
import com.example.brzodolokacije.Models.Location
+import com.example.brzodolokacije.Models.PostPreview
import com.example.brzodolokacije.Models.SearchParams
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
@@ -32,22 +30,21 @@ import com.example.brzodolokacije.paging.SearchPostsViewModel
import com.example.brzodolokacije.paging.SearchPostsViewModelFactory
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.button.MaterialButton
-import kotlinx.android.synthetic.main.fragment_show_posts.*
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.launch
-import org.osmdroid.util.GeoPoint
-import org.osmdroid.views.overlay.ItemizedIconOverlay
-import org.osmdroid.views.overlay.OverlayItem
import retrofit2.Call
import retrofit2.Response
class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
+ private var dataChanged:Boolean=false
+ private var flowData: PagingData<PostPreview>?=null
private lateinit var binding: FragmentShowPostsBinding
private var linearManagerVar: RecyclerView.LayoutManager? = null
private var adapterVar: ShowPostsAdapter? = null
+ private var gridViewAdapter:ShowPostsGridViewAdapter?=null
private var recyclerView: RecyclerView?=null
// private var gridManagerVar: RecyclerView.LayoutManager?=null
private var swipeRefreshLayout:SwipeRefreshLayout?=null
@@ -143,7 +140,12 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
recyclerView?.layoutManager=gridManagerVar*/
recyclerView?.apply {
layoutManager= GridLayoutManager(activity,2)
- //adapter= ShowPostsGridViewAdapter(posts,requireActivity())
+ if(gridViewAdapter==null)
+ gridViewAdapter= ShowPostsGridViewAdapter(requireActivity())
+ recyclerView?.adapter=gridViewAdapter
+ if(dataChanged)
+ gridViewAdapter?.submitData(lifecycle,flowData!!)
+ dataChanged=false
}
Log.d("main","klik")
}
@@ -152,6 +154,10 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
if(recyclerView?.layoutManager!=linearManagerVar){
recyclerView?.layoutManager=linearManagerVar
}
+ recyclerView?.adapter=adapterVar
+ if(dataChanged)
+ adapterVar?.submitData(lifecycle,flowData!!)
+ dataChanged=false
Log.d("main","klik")
}
@@ -161,7 +167,14 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
fun requestToBack(searchParams: SearchParams){
lifecycleScope.launch{
searchPostsViewModel.fetchPosts(searchParams).distinctUntilChanged().collectLatest {
- adapterVar?.submitData(lifecycle,it)
+ if(recyclerView?.adapter == gridViewAdapter){
+ gridViewAdapter?.submitData(lifecycle,it)
+ }
+ else{
+ adapterVar?.submitData(lifecycle,it)
+ }
+ dataChanged=true
+ flowData=it
swipeRefreshLayout?.isRefreshing=false
}
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
index 43c2109..88685e4 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
@@ -7,8 +7,8 @@ import retrofit2.converter.gson.GsonConverterFactory
object RetrofitHelper {
- val baseUrl="http://10.0.2.2:5279"
- //val baseUrl="http://147.91.204.115:10082"
+ //val baseUrl="http://10.0.2.2:5279"
+ val baseUrl="http://147.91.204.115:10082"
private var retrofit_noauth: IBackendApi? = null
private var retrofit_auth: IBackendApi? = null