From 4a7793b899c331d8bd6b32f6430908773ee7f060 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Wed, 7 Dec 2022 20:44:35 +0100 Subject: Ispravka activity single post. --- .../java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 34a9e6b..744e3a0 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 @@ -217,7 +217,7 @@ class ActivitySinglePost : AppCompatActivity() { fun getMap(){ var map: MapView? = null Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this)); - map=findViewById(R.id.MapDialogueMapView) + map=findViewById(R.id.MapDialogueMap) //findViewById(R.id.MapDialogueMapView) as MapView map!!.setTileSource(TileSourceFactory.MAPNIK); map!!.setBuiltInZoomControls(true); -- cgit v1.2.3 From 7d1b51467d708f67fd9f2fb6ed896925f1a32562 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Wed, 7 Dec 2022 20:54:24 +0100 Subject: Prikaz favourite na clientu. Dodavanje/Brisanje favourite --- .../example/brzodolokacije/Activities/ActivitySinglePost.kt | 13 +++++++------ .../app/src/main/res/layout/activity_single_post.xml | 11 +++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) 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 744e3a0..6b22a2f 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 @@ -16,6 +16,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.FragmentTransaction import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.auth0.android.jwt.JWT import com.example.brzodolokacije.Adapters.CommentsAdapter import com.example.brzodolokacije.Adapters.PostImageAdapter import com.example.brzodolokacije.Fragments.FragmentSinglePostComments @@ -105,12 +106,12 @@ class ActivitySinglePost : AppCompatActivity() { fm.replace(R.id.flSinglePostFragmentContainer, fragment) fm.commit() - /* + favouriteImage=binding.ivFavourite // set recyclerView attributes loadFavourite() - */ + translateOwnerIdToName(post.ownerId) binding.tvUser.setOnClickListener { @@ -152,10 +153,10 @@ class ActivitySinglePost : AppCompatActivity() { } - /*favouriteImage!!.setOnClickListener{ + favouriteImage!!.setOnClickListener{ addRemoveFavourite() } -*/ + binding.btnActivitySinglePostDescription.setOnClickListener { var fm: FragmentTransaction =supportFragmentManager.beginTransaction() val fragment = FragmentSinglePostDescription() @@ -177,7 +178,7 @@ class ActivitySinglePost : AppCompatActivity() { } - /* + fun loadFavourite(){ if(post.favourites!=null){ var jwtString=SharedPreferencesHelper.getValue("jwt",this) @@ -212,7 +213,7 @@ class ActivitySinglePost : AppCompatActivity() { } - */ + fun getMap(){ var map: MapView? = null diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml index 9d59e0b..243dfd0 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml @@ -94,6 +94,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvLocationType" /> + + Date: Wed, 7 Dec 2022 21:00:04 +0100 Subject: Promena izgleda pinova na browseFragment-u i UserPostsMapFragment-u --- .../main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt | 2 ++ .../src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt index a0d6146..cb213bc 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt @@ -209,8 +209,10 @@ class FragmentBrowse : Fragment(R.layout.fragment_browse) { for(post in postList){ Log.d("main",post.toString()) val startMarker = Marker(map) + startMarker.setPosition(GeoPoint(post.location.latitude,post.location.longitude)) startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM) + startMarker.icon=ContextCompat.getDrawable(requireContext(), R.drawable.ic_baseline_location_on_24) startMarker.setOnMarkerClickListener(object:OnMarkerClickListener{ override fun onMarkerClick( marker: Marker?, diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt index 882a1ae..4c4d829 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt @@ -10,6 +10,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView +import androidx.core.content.ContextCompat import com.example.brzodolokacije.Activities.ActivitySinglePost import com.example.brzodolokacije.Fragments.FragmentProfile import com.example.brzodolokacije.Models.PostPreview @@ -83,6 +84,7 @@ class UserPostsMapFragment : Fragment() { val startMarker = Marker(map) startMarker.setPosition(GeoPoint(post.location.latitude,post.location.longitude)) startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM) + startMarker.icon= ContextCompat.getDrawable(requireContext(), R.drawable.ic_baseline_location_on_24) if(flag){ flag=false map!!.controller.animateTo(GeoPoint(post.location.latitude,post.location.longitude)) -- cgit v1.2.3 From fb181ee6537963f7d8d85b51f582d170807c8356 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Wed, 7 Dec 2022 21:03:42 +0100 Subject: Setovanje teksta u dialog ako je prethodno unet u search bar. --- .../src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt index 238c7e8..c6bfe6d 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt @@ -128,6 +128,8 @@ class MapsActivity : AppCompatActivity() { var editText=EditText(this) var dialog=AlertDialog.Builder(this).setTitle("Naziv").setMessage("Unesite naziv") .setView(editText) + if(searchBar.text!=null && searchBar.text.toString().trim()!="") + editText.setText(searchBar.text.toString()) dialog.setPositiveButton("Dodaj") { dialog, which -> uploadLocation(editText.text.toString()) } -- cgit v1.2.3 From 7d2e70fd3770bf7c8c206f7affa860c06de6b271 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Wed, 7 Dec 2022 21:15:58 +0100 Subject: Prosiren model korisnika sa favourite. Dodavanje favourite objave i kod korisnika i kod objave. --- Backend/Api/Api/Models/User.cs | 4 +++- Backend/Api/Api/Services/PostService.cs | 6 ++++++ Backend/Api/Api/Services/UserService.cs | 10 +++++++--- .../src/main/java/com/example/brzodolokacije/Models/User.kt | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Backend/Api/Api/Models/User.cs b/Backend/Api/Api/Models/User.cs index cf16dbe..52d0f24 100644 --- a/Backend/Api/Api/Models/User.cs +++ b/Backend/Api/Api/Models/User.cs @@ -21,6 +21,7 @@ namespace Api.Models public List following { get; set; } public int followersCount { get; set; } public int followingCount { get; set; } + public List? favourites { get; set; } } public class Login @@ -68,7 +69,8 @@ namespace Api.Models public List following { get; set; } public int followersCount { get; set; } - public int followingCount { get; set; } + public int followingCount { get; set; } + public List? favourites { get; set; } } diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index 6d28206..cb59330 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -557,22 +557,28 @@ namespace Api.Services { string userId = _httpContext.HttpContext.User.FindFirstValue("id"); var result = false; + var user = await _users.Find(x => x._id == userId).FirstOrDefaultAsync(); Post post = await _posts.Find(x => x._id == postId).FirstOrDefaultAsync(); if (userId == null || post==null) return result; if (post.favourites == null) post.favourites = new List(); + if(user.favourites==null) + user.favourites= new List(); if (post.favourites.Contains(userId)) { post.favourites.Remove(userId); + user.favourites.Remove(post._id); result = false; } else { post.favourites.Add(userId); + user.favourites.Add(post._id); result = true; } + await _users.ReplaceOneAsync(x => x._id == user._id, user); await _posts.ReplaceOneAsync(x => x._id == postId, post); return result; diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs index 781afa8..2b3f0b8 100644 --- a/Backend/Api/Api/Services/UserService.cs +++ b/Backend/Api/Api/Services/UserService.cs @@ -17,9 +17,7 @@ namespace Api.Services private readonly IMongoCollection _posts; private readonly IJwtService _jwtService; private IConfiguration _configuration; - private readonly IFileService _fileService; - - private readonly IMongoCollection _usersSend; + private readonly IFileService _fileService; public UserService(IDatabaseConnection settings, IMongoClient mongoClient, IJwtService jwtService, IHttpContextAccessor httpContextAccessor, IConfiguration configuration, IFileService fileService) { var database = mongoClient.GetDatabase(settings.DatabaseName); @@ -364,6 +362,7 @@ namespace Api.Services tosend.followingCount = user.followingCount; tosend.followers = user.followers; tosend.following = user.following; + tosend.favourites = user.favourites; var userposts = await _posts.Find(x => x.ownerId == user._id).ToListAsync(); tosend.postcount = userposts.Count(); return tosend; @@ -384,6 +383,7 @@ namespace Api.Services tosend.followingCount = user.followingCount; tosend.followers = user.followers; tosend.following = user.following; + tosend.favourites = user.favourites; var userposts = await _posts.Find(x => x.ownerId == user._id).ToListAsync(); tosend.postcount = userposts.Count(); return tosend; @@ -476,6 +476,7 @@ namespace Api.Services follower.followers = utemp.followers; follower.followersCount = utemp.followersCount; follower.followingCount = utemp.followingCount; + follower.favourites = utemp.favourites; follower._id = utemp._id; @@ -515,6 +516,7 @@ namespace Api.Services follower._id = utemp._id; follower.followersCount = utemp.followersCount; follower.followingCount = utemp.followingCount; + follower.favourites = utemp.favourites; following.Add((UserSend)follower); } @@ -558,6 +560,7 @@ namespace Api.Services following._id = utemp._id; following.followersCount = utemp.followersCount; following.followingCount = utemp.followingCount; + following.favourites=utemp.favourites; myFollowings.Add((UserSend)following); } @@ -672,6 +675,7 @@ namespace Api.Services follower.followersCount = utemp.followersCount; follower.followingCount = utemp.followingCount; follower._id = utemp._id; + follower.favourites = utemp.favourites; myfollowers.Add((UserSend)follower); } return myfollowers; diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt index 6e282a9..072be55 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt @@ -34,5 +34,6 @@ data class UserReceive( var following:List, var followingCount:Int, var postIds:List, - var postNumber:Int + var postNumber:Int, + var favourites:List? ) \ No newline at end of file -- cgit v1.2.3 From aaa5cf630a4516274df96499002d566c35995a08 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Wed, 7 Dec 2022 21:23:29 +0100 Subject: Promenjena lokacija u navbaru za dodavanje postova. Promenjena boja. --- .../debug/res/drawable-anydpi/add_post_red_image.xml | 16 ++++++++++++++++ .../src/debug/res/drawable-hdpi/add_post_red_image.png | Bin 0 -> 610 bytes .../src/debug/res/drawable-mdpi/add_post_red_image.png | Bin 0 -> 464 bytes .../src/debug/res/drawable-xhdpi/add_post_red_image.png | Bin 0 -> 892 bytes .../debug/res/drawable-xxhdpi/add_post_red_image.png | Bin 0 -> 1286 bytes .../main/res/drawable/ic_baseline_add_post_red_24.xml | 5 +++++ .../app/src/main/res/menu/bottom_nav_menu.xml | 8 ++++---- 7 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml create mode 100644 Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.png create mode 100644 Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.png create mode 100644 Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.png create mode 100644 Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.png create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml new file mode 100644 index 0000000..a7524a9 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.png new file mode 100644 index 0000000..b4fd600 Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.png differ diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.png new file mode 100644 index 0000000..5cc1ebf Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.png differ diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.png new file mode 100644 index 0000000..8c33142 Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.png differ diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.png new file mode 100644 index 0000000..0745c58 Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.png differ diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml new file mode 100644 index 0000000..111c9a1 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml b/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml index c024570..405bc3c 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml @@ -8,14 +8,14 @@ android:id="@+id/navAllPosts" android:icon="@drawable/ic_baseline_list_24" android:title="Sve objave" /> + - Date: Wed, 7 Dec 2022 21:34:13 +0100 Subject: Izmenjem poziv za slike chatova da preuzima kompresovane slike. --- .../java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt index 478a8ea..56f7900 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt @@ -70,7 +70,7 @@ class ChatPreviewsAdapter (val items : MutableList,val activity:Cha tvUsername.text=user.username if(user.pfp!=null) { Glide.with(activity) - .load(RetrofitHelper.baseUrl + "/api/post/image/" + user.pfp!!._id) + .load(RetrofitHelper.baseUrl + "/api/post/image/compress/" + user.pfp!!._id) .circleCrop() .into(ivUserImage) } -- cgit v1.2.3 From 7a455a613fe4bb9d8cd935cc6f670736485d37e5 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Wed, 7 Dec 2022 21:46:04 +0100 Subject: Dodat prikaz tagova na objavi. --- .../Activities/ActivitySinglePost.kt | 35 ++++++++++++++++++---- .../src/main/res/layout/activity_single_post.xml | 11 ++++++- 2 files changed, 40 insertions(+), 6 deletions(-) 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 6b22a2f..2f5b2d2 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,15 +4,16 @@ import android.content.Intent import android.graphics.Color import android.os.Bundle import android.preference.PreferenceManager +import android.util.TypedValue +import android.view.View import android.view.ViewGroup -import android.widget.FrameLayout -import android.widget.ImageView -import android.widget.TextView +import android.widget.* import androidx.appcompat.app.AppCompatActivity import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.core.view.isGone import androidx.core.view.isVisible +import androidx.core.view.setMargins import androidx.fragment.app.FragmentTransaction import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -49,6 +50,7 @@ class ActivitySinglePost : AppCompatActivity() { private var recyclerViewImages: RecyclerView?=null private var recyclerViewComments: RecyclerView?=null private var favouriteImage: ImageView?=null + private lateinit var tagLayout: LinearLayout public lateinit var post: PostPreview @@ -77,7 +79,6 @@ class ActivitySinglePost : AppCompatActivity() { btnChangeHeightUp.isVisible=true btnChangeHeightUp.isGone=false btnChangeHeightUp.isClickable=true - linearLayout2=findViewById(R.id.linearLayout2) linearLayout2.setOnClickListener { @@ -108,9 +109,13 @@ class ActivitySinglePost : AppCompatActivity() { favouriteImage=binding.ivFavourite - // set recyclerView attributes + tagLayout = binding.llTags + loadTags() loadFavourite() + // set recyclerView attributes + + translateOwnerIdToName(post.ownerId) @@ -177,6 +182,26 @@ class ActivitySinglePost : AppCompatActivity() { } + } + fun loadTags(){ + if(post.tags!=null) + for( item in post.tags!!){ + var newbtn = Button(this) + newbtn.text = item + var layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + 50 + ) + layoutParams.setMargins(3) + newbtn.layoutParams=layoutParams + newbtn.setBackgroundColor(Color.parseColor("#1C789A")) + newbtn.setTextColor(Color.WHITE) + newbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10F) + newbtn.setPadding(3,1,3,1) + newbtn.isClickable=false + tagLayout.addView(newbtn) + } + } fun loadFavourite(){ diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml index 243dfd0..15e81cf 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml @@ -94,6 +94,15 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvLocationType" /> + + + app:layout_constraintTop_toBottomOf="@+id/llTags">