diff options
author | Jelena Petrovic <jelenapetrovic.7119@gmail.com> | 2022-11-20 00:00:22 +0100 |
---|---|---|
committer | Jelena Petrovic <jelenapetrovic.7119@gmail.com> | 2022-11-20 00:00:22 +0100 |
commit | e6bb1a00d7010a04ecbbdaf3592d4cba4a05e2e1 (patch) | |
tree | 46693fcb0ec3a192877fbfacd7b0542da6238dfe /Client | |
parent | aeb0e6e1dd22e31f45aafaab60c22a5317f73adb (diff) |
Omoguceno slanje pretrage, filtriranja itd putem modela, sad se salju samo hardkodovane vrednosti #36
Diffstat (limited to 'Client')
6 files changed, 34 insertions, 56 deletions
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 a827dcb..cf16689 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 @@ -26,7 +26,7 @@ import retrofit2.Call import retrofit2.Response -class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPreview>) +class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPreview>?=null) : PagingDataAdapter<PostPreview, ShowPostsAdapter.ViewHolder>(REPO_COMPARATOR) { private lateinit var token: String private lateinit var imageApi: IBackendApi @@ -59,13 +59,13 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPrevie //sets components of particular item holder.bind(getItem(position)!!) holder.itemView.setOnClickListener { - //Toast.makeText(activity,item._id,Toast.LENGTH_LONG).show() -// val intent:Intent = Intent(activity,ActivitySinglePost::class.java) -// var b=Bundle() -// items[position].location.type=LocationType.ADA -// b.putParcelable("selectedPost", items[position]) -// intent.putExtras(b) -// activity.startActivity(intent) + Toast.makeText(activity,getItem(position)!!._id,Toast.LENGTH_LONG).show() + val intent:Intent = Intent(activity,ActivitySinglePost::class.java) + var b=Bundle() + //getItem(position)!!.location.type=LocationType.ADA + b.putParcelable("selectedPost",getItem(position)!!) + intent.putExtras(b) + activity.startActivity(intent) } } 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 84df389..e78e1d6 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 @@ -43,20 +43,20 @@ import retrofit2.Response class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { private lateinit var binding: FragmentShowPostsBinding - private var posts : MutableList<PostPreview> = mutableListOf() private var linearManagerVar: RecyclerView.LayoutManager? = null private var adapterVar: ShowPostsAdapter? = null private var recyclerView: RecyclerView?=null private var gridManagerVar: RecyclerView.LayoutManager?=null private var swipeRefreshLayout:SwipeRefreshLayout?=null private lateinit var searchPostsViewModel:SearchPostsViewModel + private var searchParams:SearchParams?= SearchParams("6375784fe84e2d53df32bf03",1,1) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setUpViewModel() binding=FragmentShowPostsBinding.inflate(layoutInflater) //instantiate adapter and linearLayout - adapterVar=ShowPostsAdapter(requireActivity(),posts) + adapterVar=ShowPostsAdapter(requireActivity()) linearManagerVar= LinearLayoutManager(activity) gridManagerVar=GridLayoutManager(activity,2) } @@ -82,39 +82,13 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { } } - fun requestToBack(){ + fun requestToBack(searchParams: SearchParams){ lifecycleScope.launch{ - searchPostsViewModel.fetchPosts().distinctUntilChanged().collectLatest { - adapterVar?.submitData(it) + searchPostsViewModel.fetchPosts(searchParams).distinctUntilChanged().collectLatest { + adapterVar?.submitData(lifecycle,it) swipeRefreshLayout?.isRefreshing=false } } -// val postApi= RetrofitHelper.getInstance() -// val token=SharedPreferencesHelper.getValue("jwt", requireActivity()) -// val request=postApi.getPosts("Bearer "+token) -// request.enqueue(object : retrofit2.Callback<MutableList<PostPreview>?> { -// override fun onResponse(call: Call<MutableList<PostPreview>?>, response: Response<MutableList<PostPreview>?>) { -// if(response.isSuccessful){ -// posts=response.body()!! -// recyclerView?.adapter=ShowPostsAdapter(requireActivity(),posts) -// Toast.makeText( -// activity, "prosao zahtev", Toast.LENGTH_LONG -// ).show() -// swipeRefreshLayout?.isRefreshing=false -// }else{ -// if(response.errorBody()!=null) -// Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show(); -// } -// -// -// } -// -// override fun onFailure(call: Call<MutableList<PostPreview>?>, t: Throwable) { -// Toast.makeText( -// activity, t.toString(), Toast.LENGTH_LONG -// ).show(); -// } -// }) } override fun onCreateView( @@ -138,16 +112,14 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { R.color.purple_700 ) swipeRefreshLayout?.post(kotlinx.coroutines.Runnable { - //swipeRefreshLayout?.isRefreshing=true - requestToBack() + swipeRefreshLayout?.isRefreshing=true + requestToBack(searchParams!!) }) return rootView } override fun onRefresh() { - //requestToBack() - adapterVar!!.notifyDataSetChanged() - Log.d("main",adapterVar!!.itemCount.toString()) + requestToBack(searchParams!!) } }
\ No newline at end of file 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 f990133..a292160 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 @@ -80,3 +80,9 @@ data class PagedPosts( var totalposts:Int, var posts:MutableList<PostPreview> ) + +data class SearchParams( + var locationId: String, + var sorttype:Int, + var filterdate:Int +)
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt index 2f69a7a..b1c89db 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsPagingSource.kt @@ -6,20 +6,22 @@ import androidx.paging.PagingSource import com.example.brzodolokacije.Interfaces.IBackendApi import com.example.brzodolokacije.Models.PagedPosts import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Models.SearchParams import com.example.brzodolokacije.Services.SharedPreferencesHelper import retrofit2.HttpException import java.io.IOException class SearchPostsPagingSource( val backend: IBackendApi, - val activity: Activity + val activity: Activity, + val searchParams:SearchParams ):PagingSource<Int,PostPreview>() { override suspend fun load(params: LoadParams<Int>): LoadResult<Int, PostPreview> { val page=params.key?:0 val token=SharedPreferencesHelper.getValue("jwt", activity) return try{ - val response=backend.getPagedPosts("Bearer "+token,"6375784fe84e2d53df32bf03", - page,1,1 + val response=backend.getPagedPosts("Bearer "+token,searchParams.locationId, + page,searchParams.sorttype,searchParams.filterdate ) Log.d("main",page.toString()) LoadResult.Page( diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt index ae3a684..4eeb85b 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsRepository.kt @@ -6,21 +6,22 @@ import androidx.paging.PagingConfig import androidx.paging.PagingData import androidx.paging.cachedIn import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Models.SearchParams import com.example.brzodolokacije.Services.RetrofitHelper import kotlinx.coroutines.flow.Flow -class SearchPostsRepository(val activity: Activity) { +class SearchPostsRepository(val activity: Activity,val searchParams: SearchParams) { companion object{ const val DEFAULT_PAGE_SIZE=20 const val DEFAULT_PAGE_INDEX=1 - fun getInstance(activity: Activity)=SearchPostsRepository(activity) + fun getInstance(activity: Activity,searchParams: SearchParams)=SearchPostsRepository(activity,searchParams) } fun letSearchedPostsFlow(pagingConfig: PagingConfig=getDefaultPageConfig()): Flow<PagingData<PostPreview>> { return Pager( config=pagingConfig, - pagingSourceFactory = {SearchPostsPagingSource(RetrofitHelper.getInstance(),activity)} + pagingSourceFactory = {SearchPostsPagingSource(RetrofitHelper.getInstance(),activity,searchParams)} ).flow } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt index d0bf3ef..cee1a34 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/paging/SearchPostsViewModel.kt @@ -9,17 +9,14 @@ import androidx.paging.PagingData import androidx.paging.cachedIn import com.example.brzodolokacije.Interfaces.IBackendApi import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Models.SearchParams import kotlinx.coroutines.flow.Flow class SearchPostsViewModel( private val api:IBackendApi, val activity:Activity ): ViewModel() { - val posts = - Pager(config = PagingConfig(pageSize = 10), pagingSourceFactory = { - SearchPostsPagingSource(api,activity) - }).flow.cachedIn(viewModelScope) - fun fetchPosts(): Flow<PagingData<PostPreview>>{ - return SearchPostsRepository.getInstance(activity).letSearchedPostsFlow().cachedIn(viewModelScope) + fun fetchPosts(searchParams: SearchParams): Flow<PagingData<PostPreview>>{ + return SearchPostsRepository.getInstance(activity,searchParams).letSearchedPostsFlow().cachedIn(viewModelScope) } }
\ No newline at end of file |