aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-11-09 23:55:53 +0100
committerJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-11-09 23:55:53 +0100
commitd342f8e91c7daa0f706a686d0939e8e5146848c6 (patch)
treef47b09e30fc8968a51a3be3952d047a5ad53fd03 /Client
parent6181721dc548421ec2926c17a73f0d48a2c99482 (diff)
dodat odabir nacina prikaza objava (u listi ili gridu), dodat refresh povlacenjem i spiner dok se ucitavaju objave #29
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/build.gradle1
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt84
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml23
3 files changed, 70 insertions, 38 deletions
diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle
index 72f1f0d..ccc90fc 100644
--- a/Client/BrzoDoLokacije/app/build.gradle
+++ b/Client/BrzoDoLokacije/app/build.gradle
@@ -46,6 +46,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
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 73744d4..83f6429 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
@@ -8,9 +8,12 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ImageButton
import android.widget.Toast
+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.NavigationActivity
import com.example.brzodolokacije.Adapters.SampleAdapter
import com.example.brzodolokacije.Adapters.ShowPostsAdapter
@@ -19,29 +22,53 @@ import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.databinding.FragmentHomeBinding
+import com.example.brzodolokacije.databinding.FragmentShowPostsBinding
+import kotlinx.android.synthetic.main.fragment_show_posts.*
+import kotlinx.android.synthetic.main.fragment_show_posts.view.*
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Response
-class FragmentShowPosts : Fragment() {
+class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
- private lateinit var binding: FragmentShowPosts
+ private lateinit var binding: FragmentShowPostsBinding
private var posts : MutableList<PostPreview> = mutableListOf()
- private var layoutManagerVar: RecyclerView.LayoutManager? = null
+ private var linearManagerVar: RecyclerView.LayoutManager? = null
private var adapterVar: RecyclerView.Adapter<ShowPostsAdapter.ViewHolder>? = null
private var recyclerView: RecyclerView?=null
+ private var gridManagerVar: RecyclerView.LayoutManager?=null
+ private var swipeRefreshLayout:SwipeRefreshLayout?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- //load data for the list
- loadData()
- Log.d("main","greska")
+ binding=FragmentShowPostsBinding.inflate(layoutInflater)
//instantiate adapter and linearLayout
+ adapterVar=ShowPostsAdapter(requireActivity(),posts)
+ linearManagerVar= LinearLayoutManager(activity)
+ gridManagerVar=GridLayoutManager(activity,2)
+ }
+
+ fun setUpListeners(rootView: View?){
+ rootView?.findViewById<ImageButton>(R.id.btnGridLayout)?.setOnClickListener() {
+ if(recyclerView?.layoutManager!=gridManagerVar){
+ recyclerView?.layoutManager=gridManagerVar
+ }
+ Log.d("main","klik")
+ }
+
+ rootView?.findViewById<ImageButton>(R.id.btnLinearLayout)?.setOnClickListener() {
+ if(recyclerView?.layoutManager!=linearManagerVar){
+ recyclerView?.layoutManager=linearManagerVar
+ }
+ Log.d("main","klik")
+ }
+ }
+
+ fun requestToBack(){
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){
@@ -50,6 +77,7 @@ class FragmentShowPosts : Fragment() {
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();
@@ -64,30 +92,8 @@ class FragmentShowPosts : Fragment() {
).show();
}
})
-
- adapterVar=ShowPostsAdapter(requireActivity(),posts)
- layoutManagerVar= LinearLayoutManager(activity)
}
- private fun loadData() {
- posts.add(PostPreview("123","asdasd",
- Location("asd","Ajfelov toranj","Pariz",
- "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid",13,
- 4.3f,mutableListOf(),mutableListOf()))
- posts.add(PostPreview("123","asdasd",
- Location("asd","Ajfelov toranj","Pariz",
- "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid",13,
- 4.3f,mutableListOf(),mutableListOf()))
- posts.add(PostPreview("123","asdasd",
- Location("asd","Ajfelov toranj","Pariz",
- "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid",13,
- 4.3f,mutableListOf(),mutableListOf()))
- posts.add(PostPreview("123","asdasd",
- Location("asd","Ajfelov toranj","Pariz",
- "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid",13,
- 4.3f,mutableListOf(),mutableListOf()))
- }
-
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@@ -96,9 +102,27 @@ class FragmentShowPosts : Fragment() {
recyclerView = rootView?.findViewById(R.id.rvMain)
// set recyclerView attributes
recyclerView?.setHasFixedSize(true)
- recyclerView?.layoutManager = layoutManagerVar
+ //recyclerView?.layoutManager = linearManagerVar
+ recyclerView?.layoutManager = linearManagerVar
recyclerView?.adapter = adapterVar
+ setUpListeners(rootView)
+ swipeRefreshLayout = rootView?.findViewById<View>(R.id.swipeContainer) as SwipeRefreshLayout
+ swipeRefreshLayout?.setOnRefreshListener(this)
+ swipeRefreshLayout?.setColorSchemeResources(
+ R.color.purple_200,
+ R.color.teal_200,
+ R.color.dark_blue_transparent,
+ R.color.purple_700
+ )
+ swipeRefreshLayout?.post(kotlinx.coroutines.Runnable {
+ swipeRefreshLayout?.isRefreshing=true
+ requestToBack()
+ })
return rootView
}
+ override fun onRefresh() {
+ requestToBack()
+ }
+
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml
index 02512d4..a12801e 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml
@@ -22,7 +22,7 @@
<ImageButton
- android:id="@+id/button3"
+ android:id="@+id/btnSortType"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
@@ -31,19 +31,19 @@
android:background="@color/white"/>
<ImageButton
- android:id="@+id/imageButton1"
+ android:id="@+id/btnSortDirection"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:scaleType="centerCrop"
android:src="@drawable/sort"
- app:layout_constraintStart_toEndOf="@+id/button3"
+ app:layout_constraintStart_toEndOf="@+id/btnSortType"
tools:layout_editor_absoluteY="0dp"
android:background="@color/white"/>
<ImageButton
- android:id="@+id/imageButton2"
+ android:id="@+id/btnLinearLayout"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginEnd="16dp"
@@ -51,13 +51,13 @@
android:background="@color/white"
android:scaleType="centerCrop"
android:src="@drawable/list"
- app:layout_constraintEnd_toStartOf="@+id/imageButton3"
+ app:layout_constraintEnd_toStartOf="@+id/btnGridLayout"
app:layout_constraintHorizontal_bias="1.0"
- app:layout_constraintStart_toEndOf="@+id/imageButton1"
+ app:layout_constraintStart_toEndOf="@+id/btnSortDirection"
tools:layout_editor_absoluteY="0dp" />
<ImageButton
- android:id="@+id/imageButton3"
+ android:id="@+id/btnGridLayout"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="248dp"
@@ -65,9 +65,14 @@
android:background="@color/white"
android:scaleType="centerCrop"
android:src="@drawable/grid"
- app:layout_constraintStart_toEndOf="@+id/imageButton1"
+ android:clickable="true"
+ app:layout_constraintStart_toEndOf="@+id/btnSortDirection"
tools:layout_editor_absoluteY="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
+<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:id="@+id/swipeContainer">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMain"
@@ -77,5 +82,7 @@
app:layout_constraintTop_toTopOf="parent" >
</androidx.recyclerview.widget.RecyclerView>
+</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+
</LinearLayout> \ No newline at end of file