0

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

0 Answers0