when i swipe to refresh the data, the first swipe is ok but after that every swipe reload and add the same data over and over again, by the end i have a list with same items over and over I tried to clear before but i don't understand what's wrong with my code, if someone could explain it to me
adapter
package com.intersoft.packhouse.adapters
import android.app.Activity
import android.text.method.TextKeyListener.clear
import android.text.method.TextKeyListener.clearMetaKeyState
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.intersoft.packhouse.R
import com.intersoft.packhouse.enums.BasicClass
import com.intersoft.packhouse.enums.BasicContext
import com.intersoft.packhouse.fragments.BaseFragment
import com.intersoft.packhouse.printing.PrintListener
import com.intersoft.packhouse.viewholders.*
class BasicAdapter(val context: Activity, val printListener: PrintListener, val frag:BaseFragment,myBasicContext:BasicContext?=null):RecyclerView.Adapter<RecyclerView.ViewHolder>() {
val inflater = LayoutInflater.from(context)
var baseClass:BasicClass? = null
var items = mutableListOf<Any>()
var original = mutableListOf<Any>()
var myContext = context
var myBasicContext = myBasicContext
override fun getItemViewType(position: Int): Int {
val item = items[position]
return BasicClass.fromClaz(item)
.uniqueId()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return when(viewType){
BasicClass.Crop.uniqueId() -> CropViewHolder(inflater.inflate(R.layout.row_crop, parent, false))
BasicClass.CropX.uniqueId() -> CropViewHolder(inflater.inflate(R.layout.row_crop, parent, false))
BasicClass.ColdRoom.uniqueId() -> CRoomViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.ColdCell.uniqueId() -> CellViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.QC.uniqueId() -> QCViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.RmStandards.uniqueId() -> RmStandardViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Supplier.uniqueId() -> SupplierViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Customer.uniqueId() -> CustomerViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.OrderModel.uniqueId() -> OrderViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Receiving.uniqueId() -> ReceivingViewHolder(inflater.inflate(R.layout.row_receiving, parent, false))
BasicClass.Intake.uniqueId() -> IntakeViewHolder(inflater.inflate(R.layout.row_basic, parent, false), printListener,myBasicContext)
BasicClass.RmStorage.uniqueId() -> RmStorageViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Requisition.uniqueId() -> RequisitionViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Issuing.uniqueId() -> IssueingViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Vehicle.uniqueId() -> VehicleViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Processing.uniqueId() -> ProcessingViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Packaging.uniqueId() -> PackagingViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Conformance.uniqueId() -> ConformanceViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Dispatch.uniqueId() -> DispatchViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.DispatchedItem.uniqueId() -> DispatchedItemViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Collection.uniqueId() -> CollectionViewHolder(inflater.inflate(R.layout.row_basic, parent, false), frag)
BasicClass.FarmPurchase.uniqueId() -> FarmPurchaseViewHolder(inflater.inflate(R.layout.row_basic, parent, false), printListener)
BasicClass.CollectionDispatch.uniqueId() -> CDItemViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Binning.uniqueId() -> BinningViewHolder(myContext,inflater.inflate(R.layout.row_basic, parent, false), printListener)
BasicClass.SortingLots.uniqueId() -> SortingLotViewHolder(myContext,inflater.inflate(R.layout.row_sorting, parent, false), printListener)
BasicClass.SortedBins.uniqueId() -> SortedBinsViewHolder(myContext,inflater.inflate(R.layout.row_sorting, parent, false), printListener)
BasicClass.NewBins.uniqueId() -> NewBinsViewHolder(myContext,inflater.inflate(R.layout.row_sorting, parent, false), printListener)
BasicClass.ProcessingLots.uniqueId() -> ProcessingLotsViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.BatchSheet.uniqueId() -> BatchSheetViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
BasicClass.Reject.uniqueId() -> RejectViewHolder(inflater.inflate(R.layout.row_basic, parent, false))
else -> CropViewHolder(inflater.inflate(R.layout.row_crop, parent, false))
}
}
override fun getItemCount(): Int {
return items.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
(holder as? ListHolder<Any>)?.let {
it.bind(items[position])
}
}
}
view holder
package com.intersoft.packhouse.viewholders
import android.view.View
import com.intersoft.packhouse.R
import com.intersoft.packhouse.models.BatchSheet
import com.intersoft.packhouse.utils.toMiscDate
import com.google.gson.Gson
class BatchSheetViewHolder(view: View):BaseHolder(view) , ListHolder<BatchSheet>{
override fun bind(item: BatchSheet){
clear()
icon(R.drawable.ic_human_resources)
keyValue("Date", item.date)
keyValue("Duration", "${item.start_time} - ${item.end_time} (${item.duration} mins)")
keyValue("Lot No", item?.lot?.lot_no)
keyValue("GRN", "${item?.intake?.prn} ")
keyValue("Supplier", item?.supplier?.company)
keyValue("Order No", item?._order?.order_no)
keyValue("Item",item?.item?.item_name)
keyValue("No of Boxes", item.no_of_boxes)
keyValue("Net Weight", item.net_weight)
// keyValue("ordered Item", item?.item_name)
// keyValue("4KGS", item?.lot?.four_kg_boxes)
// keyValue("10KGS", item?.lot?.ten_kg_boxes)
// keyValue("Remarks", item.remarks)
}
}
data class
package com.intersoft.packhouse.models
import android.content.ClipData
data class BatchSheet(
var _id:Int? = null,
var date: String? = null,
var duration: Int? = null,
var end_time: String? = null,
var prn: String? = null,
var intake: Intake? = null,
var net_weight: Int? = null,
var no_of_boxes: Int? = null,
var _order: Order? = null,
var remarks: String? = null,
var item: CropX? = null,
var supplier: Supplier? = null,
var start_time: String? = null,
var lot:ProcessingLots? = null,
var item_name: String? = null
):Optionable{
override fun optionTitle(): String? {
return prn
}
override fun optionValue(): Any? {
return _id
}
override fun searchString(): String? {
return "${super.searchString()} ${intake?.item?.item_name} ${intake?.prn} ${supplier?.account_name}"
//TODO:Supplier name add this when its changed to supplier object
}
}
I want the recycler view not to duplicate the data