تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ معین سعادتمند
مربوط به تاپیک قبلی
Mostafa Jahani حل شده توسط Mostafa Jahani

سلام خواهشا یکی راه حل این مشکلو به من بگه کاملا توضیح دادم پروژرو کامل قرار دادم ولی هیچ کسی حتی نظرم نمیده. 

لینک تاپیک :

 https://7learn.ac/community/null-%D8%A8%D9%88%D8%AF%D9%86-interface-uYew1

سلام معین جان وقت بخیر

 

من پروژه رو دانلود کردم ولی بخاطر کانکشنم و تفاوت در ورژن gradle مون بیلد نشد حتما بررسی میکنم و نتیجه براتون مینویسم .

پوریا شفیعی ۲۹ اسفند ۱۳۹۹، ۲۲:۰۰

سلام آقا معین وقت بخیر

تا اونجایی که من متوجه شدم شما توی فرگمنت اصلی بعد از کلیک روی محصول میخوای دوباره بیای به فرگمنت اصلی در حالی که بعد از کلیک روی محصول باید بری به صفحه detail محصول. خب طبیعتاً باید فایل viewModel صفحه detail رو بسازی و از طریق koin اون رو به همراه اینترفیس پاس بدی به صفحه detail. بنابراین باید داخل koin این خط رو اضافه کنی:

viewModel { (bundle: Bundle) -> ProductDetailViewModel(bundle, get()) }

امیدوارم منظورت رو درست متوجه شده باشم.

Mostafa Jahani ۳۰ اسفند ۱۳۹۹، ۲۱:۴۴

شما توی این قسمت داری محصول رو پاس میدی به اینترفیس

            itemView.setOnClickListener {
                onProductClickListener?.onProductClick(product)
            }

که من لاگ گرفتم اطلاعات درست پاس داده میشه. منتها چون وقتی کلیک می‌کنی باید صفحه جزئیات محصول رو نمایش بده:

    override fun onProductClick(product: Product) {
        startActivity(Intent(requireContext(), ProductDetailActivity::class.java).apply {
            putExtra(EXTRA_KEY_DATA, product)
        })
    }

و شما ویومدلی نداری که اطلاعات رو برای صفحه بفرسته و نمایش بده داره خطا میده. به نظر من شما مراحل رو درست رفتی فقط باید ادامه بدی و صفحه جزئیات محصول رو هم نمایش بدی اونوقت احتمالاً مشکلت حل میشه.

 ببخشید اگه بین اساتید من سعی میکنم کمک کنم چوم خودم این قسمت رو انجام دادم و نتیجه گرفتم دارم میگم.

Mostafa Jahani ۰۱ فروردین ۱۴۰۰، ۰۶:۳۸

سلام معین عزیز وقت بخیر

 

سال نو مبارک 

 

کماکان پروژه به علت متفاوت بودن ورژن gradle بیلد نشد.

بطور کل اشتباهاتی که در پروژه شما دیدم :

۱:نیازی به اینجکت کردن این موارد نبود

val productListAdapterPopular: ProductListAdapter by inject()
val productListAdapterLatest: ProductListAdapter by inject()

همین مشکل باعث میشد پروژه تغییر کند و روش پیاده سازی متفاوتی به خود بگیرد.

پیشنهاد من بهتون این هست جلسات مربوط به این قسمت رو مجدد ببینید و طبق جلسات پیاده سازی رو جلو ببرید

نکته ای که هست اگر لازم باشه مشکلات پروژه رو برطرف کنم احتمالا در آخر به سورس کدی که استاد در پیوست جلسه قرار دادند میرسیم.

پیشنهاد دومی هم که دارم ادامه سورس کد موجود در بخش پیوست جلو نرید اینطوری زیاد متوجه نوع پیاده سازی سازی پروژه نمیشید و براتون مشکل زا خواهد شد.

پس بطور کل مشکلات شما صفحه : HomeFragment 

پوریا شفیعی ۰۱ فروردین ۱۴۰۰، ۰۸:۳۳

سلام سال نو شما هم مبارک 
ممنون برای وقتی که گذاشتی پوریای عزیز
در مورد دوبار گرفتن نمونه از ProductListAdapter برای دو ردیف شدن لیست محصولات بود که حتی اگه حذفش کنی و یک ردیفش کنی یا براش یه اداپتر جدا بسازی با اینترفیس جداگانه و... همچنان مشکل پا برجاست.
اگر پروژه بیلد بشه و اجراش کنید متوجه مشکل میشید تا اینجای کار پروژه هیچ چیز پیچیده ای نداشته که بگم متوجه نشدم یا اشتباه پیش رفتم این مشکل یکم عجیبه تو پروژه اماده زمانی اداپتر نمونش ساخته میشه این قسمت اجرا میشه ولی تو اونی که خودم پیش بردم این اتفاق نمیوفته.

var onProductClickListener: OnProductClickListener? = null 

ای دی تلگرام و شماره اگه لطف کنی یه پی ام بدی خیلی راحت‌تر میتونم نشون بدم مشکلو و کاملا توضیح بدم.

@moeinx_x

۰۹۳۵۷۱۱۴۱۰۳
الان پروژه اماده هستش میشه سوییچ کرد روش از مشکل گذشت ولی در اینده اینطور نیست.

معین سعادتمند ۰۱ فروردین ۱۴۰۰، ۰۹:۳۱

آقا معین عزیز

شما توی فرگمنت اصلی داخل onViewCreated این خط رو اضافه نکردی:

productListAdapterLatest.onProductClickListener = this

که باعث میشه اینترفیس کار نکنه. من روی پروژه شما اضافه کردم و جواب داد.

 

بهترین پاسخ
Mostafa Jahani ۰۱ فروردین ۱۴۰۰، ۱۲:۲۴