سلام زمانی که رو ایتم کلیک میشه و می خوام محصول رو به MainFragment بفرستم اینترفیس ناله و ارسال نمیشه اگه نیازه پروژرو اپلود کنم چون بخش بخش پروژرو نوشتم و مستقیم پروژه ای که استاد شاهینی قرار دادنو باز نکردم
class ProductListAdapter(val imageLoadingService: ImageLoadingService) :
RecyclerView.Adapter<ProductListAdapter.ViewHolder>() {
var onProductClickListener: OnProductClickListener?=null
var products = ArrayList<Product>()
set(value) {
field = value
notifyDataSetChanged()
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val productIv: NikeImageView = itemView.findViewById(R.id.productIv)
val titleTv: TextView = itemView.findViewById(R.id.productTitleTv)
val currentPriceTv: TextView = itemView.findViewById(R.id.currentPriceTv)
val previousPriceTv: TextView = itemView.findViewById(R.id.previousPriceTv)
fun bindProduct(product: Product) {
imageLoadingService.load(productIv, product.image)
titleTv.text = product.title
currentPriceTv.text = formatPrice(product.price)
previousPriceTv.text = formatPrice(product.previous_price)
previousPriceTv.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
itemView.implementSpringAnimationTrait()
itemView.setOnClickListener {
Timber.i(product.toString())
onProductClickListener?.onProductClick(product)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(
LayoutInflater.from(parent.context).inflate(R.layout.item_product, parent, false)
)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) =
holder.bindProduct(products[position])
override fun getItemCount(): Int = products.size
interface OnProductClickListener {
fun onProductClick(product: Product)
}
}
سلام وقت بخیر
پروژه رو ارسال بفرمایید .
یا جزییات بیشتری از کارهایی که کردید و اروری که برخورد کردید بگید.
لینک گوگل درایو
https://drive.google.com/file/d/1GEJIZghbKRVyLNjJBh_O8yh4_pAdLQOz/view?usp=sharing
مشکلو بخوام دقیق بگم وقتی شما روی محصول داخل فرگمنت اصلی کلیک میکنی با استفاده از اینترفیسه داخل اداپتر لیست محصولات محصول رو به فرگمنت اصلی ارسال میکنی. مشکل اینجاس که اینترفیس داخل اداپتر null هستش و متود onProductClick کال نمیشه که بخواد محصولو بفرسته علت null بودن اینترفیس چیه؟؟؟؟
داکیومنت های کاتلینو داشتم میخوندم بخش مربوط به اینترفیسو که مثال زده بود متود ها هم نام میتونن باعث بروز خطا بشن من دو ردیف لیست محصولات دارم لیست محصولات factory هستش من دوتا اداپتر جدا ساختم با اینترفیس های نام متفاوت درست نشد (ربطی نداشت شاید ولی امتحان کردم) کلا یه لیستو پاک کردم بازم درست نشد.
اینم اروری که رخ میده
java.lang.NullPointerException
at com.example.nikestore.feature.homeFragment.ProductListAdapter$ViewHolder$bindProduct$1.onClick(ProductListAdapter.kt:43)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
سلام معین جان
امیدوارم حالت خیلی خوب باشه
بهترین پیشنهادی که میتونم بدم اینه که فایل پروژهای که استاد قرار دادند رو دانلود کنید و inject کردن آداپتر رو از اونجا بررسی کنید
سال جدید رو پیشاپیش تبریک میگم
با آرزوی موفقیت و سلامتی و خوشحالی