From 74878a9beffefc5f1d62b87b891da0f9d06c16e7 Mon Sep 17 00:00:00 2001 From: vavali08 Date: Sun, 11 Feb 2024 13:26:58 -0500 Subject: [PATCH] soem updates --- .../SubletterPostedListingsFragment.kt | 53 +++--------- .../adapters/PostedSubletsListAdapter.kt | 82 +++++++++++++++++++ .../labs/pennmobile/api/StudentLife.java | 5 ++ .../pennmobile/classes/SublettingViewModel.kt | 19 +++++ .../src/main/res/layout/fragment_gsr.xml | 2 +- .../fragment_subletter_posted_listings.xml | 12 +-- 6 files changed, 125 insertions(+), 48 deletions(-) create mode 100644 PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/PostedSubletsListAdapter.kt diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/SubletterPostedListingsFragment.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/SubletterPostedListingsFragment.kt index 5fd804d6..5d936fbe 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/SubletterPostedListingsFragment.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/SubletterPostedListingsFragment.kt @@ -10,8 +10,9 @@ import androidx.fragment.app.FragmentTransaction import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.pennapps.labs.pennmobile.adapters.SublettingListAdapter +import com.pennapps.labs.pennmobile.adapters.PostedSubletsListAdapter import com.pennapps.labs.pennmobile.api.StudentLife +import com.pennapps.labs.pennmobile.classes.Sublet import com.pennapps.labs.pennmobile.classes.SublettingModel import com.pennapps.labs.pennmobile.classes.SublettingViewModel import com.pennapps.labs.pennmobile.databinding.FragmentSubletterPostedListingsBinding @@ -24,8 +25,8 @@ class SubletterPostedListingsFragment(private val dataModel: SublettingViewModel //recyclerview adapters and layout manager lateinit var sublettingRecyclerView: RecyclerView lateinit var newLayoutManager: GridLayoutManager - lateinit var sublettingList: ArrayList - lateinit var myAdapter: SublettingListAdapter + lateinit var sublettingList: ArrayList + lateinit var myAdapter: PostedSubletsListAdapter //api manager private lateinit var mStudentLife: StudentLife @@ -63,34 +64,10 @@ class SubletterPostedListingsFragment(private val dataModel: SublettingViewModel if (sublettingList.isNotEmpty()) { binding.postedNoListingsText.visibility = View.GONE; - /* - // Update the ConstraintSet to constrain addlistingbutton below sublettingRecyclerView - val constraintSet = ConstraintSet() - constraintSet.clone(binding.root) - - constraintSet.connect( - binding.postedAddListingButton.id, - ConstraintSet.TOP, - binding.listingsRefreshLayout.id, - ConstraintSet.BOTTOM, - 16 // You can adjust the margin as needed - ) - - // Constrain the bottom of sublettingRecyclerView to the top of addlistingbutton - constraintSet.connect( - binding.listingsRefreshLayout.id, - ConstraintSet.BOTTOM, - binding.postedAddListingButton.id, - ConstraintSet.TOP, - 16 // You can adjust the margin as needed - ) - - constraintSet.applyTo(binding.root) - - */ + } - myAdapter = SublettingListAdapter(context, sublettingList) + myAdapter = PostedSubletsListAdapter(sublettingList) sublettingRecyclerView.adapter = myAdapter } @@ -109,9 +86,9 @@ class SubletterPostedListingsFragment(private val dataModel: SublettingViewModel .commitAllowingStateLoss() } - private fun setUpData(): ArrayList { + private fun setUpData(): ArrayList { - var sublettingList = ArrayList() + var sublettingList = ArrayList() val sublettingImages = intArrayOf( R.drawable.dining_gourmet_grocer, @@ -137,14 +114,6 @@ class SubletterPostedListingsFragment(private val dataModel: SublettingViewModel 400 ) - val sublettingNegotiablePrices = arrayOf( - true, - false, - true, - true, - false - ) - val sublettingBedrooms = arrayOf( 2, 3, @@ -162,9 +131,9 @@ class SubletterPostedListingsFragment(private val dataModel: SublettingViewModel ) for (i in sublettingImages.indices) - sublettingList.add(SublettingModel(sublettingImages[i], sublettingNames[i], - sublettingPrices[i], sublettingNegotiablePrices[i], sublettingBedrooms[i], - sublettingBathrooms[i], 2, 2)) + sublettingList.add(Sublet(title = sublettingNames[i], + minPrice = sublettingPrices[i], beds = sublettingBedrooms[i], + baths = sublettingBathrooms[i])) return sublettingList diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/PostedSubletsListAdapter.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/PostedSubletsListAdapter.kt new file mode 100644 index 00000000..516b5265 --- /dev/null +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/PostedSubletsListAdapter.kt @@ -0,0 +1,82 @@ +package com.pennapps.labs.pennmobile.adapters + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.fragment.app.FragmentTransaction +import androidx.recyclerview.widget.RecyclerView +import com.pennapps.labs.pennmobile.MainActivity +import com.pennapps.labs.pennmobile.R +import com.pennapps.labs.pennmobile.SublesseeDetailsFragment +import com.pennapps.labs.pennmobile.classes.Sublet +import com.pennapps.labs.pennmobile.classes.SublettingModel + +class PostedSubletsListAdapter(var sublettingList: ArrayList): + RecyclerView.Adapter() { + + private lateinit var mContext: Context + private lateinit var mActivity: MainActivity + + class SublettingCardViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) { + + var listingImage = itemView.findViewById(R.id.subletting_cardview_image) + var listingTitle = itemView.findViewById(R.id.subletting_cardview_title) + var listingPrice = itemView.findViewById(R.id.subletting_cardview_price) + var listingRooms = itemView.findViewById(R.id.subletting_cardview_rooms) + var listingDates = itemView.findViewById(R.id.subletting_cardview_dates) + + /* init { + itemView.setOnClickListener { + mActivity.supportFragmentManager.beginTransaction() + .replace(itemView.id, SubletteeFragment()) + .addToBackStack(null) + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + .commit() + } + } */ + + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SublettingCardViewHolder { + val newView = LayoutInflater.from(parent.context).inflate(R.layout.subletting_cardview, parent, false) + mContext = parent.context + mActivity = mContext as MainActivity + return SublettingCardViewHolder(newView) + } + + override fun onBindViewHolder(holder: SublettingCardViewHolder, position: Int) { + + var mSublettingCard: Sublet = sublettingList[position] + //holder.listingImage.setImageResource(mSublettingCard.listingImage!!) + holder.listingTitle.text = mSublettingCard.title + + //price, adding negotiable if price is negotiable + var price = "$" + mSublettingCard.minPrice.toString() + /* + if (mSublettingCard.isNegotiable == true) { + price += " (negotiable)" + } + + */ + holder.listingPrice.text = price + + val rooms = mSublettingCard.beds.toString() + " bd | " + + mSublettingCard.baths.toString() + " ba" + holder.listingRooms.text = rooms + + holder.itemView.setOnClickListener { + mActivity.supportFragmentManager.beginTransaction() + .replace(R.id.content_frame, SublesseeDetailsFragment()) + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) + .addToBackStack(null) + .commit() + } + } + + override fun getItemCount(): Int { + return sublettingList.size + } +} \ No newline at end of file diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/StudentLife.java b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/StudentLife.java index 93f1f9dc..f8c1310f 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/StudentLife.java +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/StudentLife.java @@ -216,4 +216,9 @@ void createSublet( @Body Sublet sublet, Callback callback); + @Headers({"Content-Type: application/json"}) + @GET("/sublet/properties/") + Observable> getPostedSublets( + @Header("Authorization") String bearerToken); + } diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/SublettingViewModel.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/SublettingViewModel.kt index 2b36feac..9f57cf2f 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/SublettingViewModel.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/SublettingViewModel.kt @@ -2,14 +2,17 @@ package com.pennapps.labs.pennmobile.classes import android.app.Activity import android.util.Log +import android.view.View import android.widget.Toast import androidx.preference.PreferenceManager import com.pennapps.labs.pennmobile.MainActivity import com.pennapps.labs.pennmobile.R +import com.pennapps.labs.pennmobile.adapters.GsrReservationsAdapter import com.pennapps.labs.pennmobile.api.OAuth2NetworkManager import com.pennapps.labs.pennmobile.api.StudentLife import retrofit.ResponseCallback import com.pennapps.labs.pennmobile.classes.Sublet +import kotlinx.android.synthetic.main.loading_panel.loadingPanel import retrofit.RetrofitError import retrofit.client.Response import retrofit.Callback @@ -44,6 +47,22 @@ class SublettingViewModel (private val activity: Activity, private val studentLi } }) + + + studentLife.getPostedSublets(bearerToken).subscribe({ sublets -> + mActivity.runOnUiThread { + //return sublets + + } + }, { throwable -> + mActivity.runOnUiThread { + Log.e( + "Posted Sublet Fragment", + "Could not load Posted Sublets", + throwable + ) + } + }) } diff --git a/PennMobile/src/main/res/layout/fragment_gsr.xml b/PennMobile/src/main/res/layout/fragment_gsr.xml index 5ededd06..3b5ba2fe 100644 --- a/PennMobile/src/main/res/layout/fragment_gsr.xml +++ b/PennMobile/src/main/res/layout/fragment_gsr.xml @@ -214,7 +214,7 @@ + @@ -48,17 +49,18 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@id/posted_add_listing_button" + app:layout_constraintTop_toBottomOf="@id/posted_add_listing_button" app:layout_constraintVertical_bias="1.0"> + + app:layout_constraintTop_toBottomOf="parent"/> + \ No newline at end of file