<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های سعید متقی نژاد</title><link>https://virgool.ir/feed/@saeed.mottaqinejad</link><description></description><language>fa</language><pubDate>2026-11-12 08:30:43</pubDate><image><url>https://files.virgool.ir/upload/users/209562/avatar/MdXT5o.png</url><title>سعید متقی نژاد</title><link>https://virgool.ir/@saeed.mottaqinejad</link></image><item><title>اندروید: کلیک پی در پی و مصائب آن</title><link>https://virgool.ir/@saeed.mottaqinejad/اندروید-کلیک-پی-در-پی-و-مصائب-آن-hqf9fpj7xfhi</link><description>یکی از مشکلاتی که خیلی از اپ‌های اندرویدی دارن وقتی هست که شما روی دکمه‌ای یا آیتمی از لیست بطور پیاپی و سریع تپ (کلیک) می‌کنید و اون اکشنی که براش تعریف شده به جای یک بار چند بار فراخوانی میشه.حالا مشکل متداول جایی هست که اون اکشن مربوط میشه به باز کردن یه صفحه جدید و شما با این کار موفق میشید چند نمونه از اون صفحه رو باز کنید و مشکل بزرگتر وقتی هست که بک می‌زنید و می‌بینید برگشتید به صفحه‌ی تکراری که همین الان از اونجا بک زدید!حالا چجوری میشه این مشکل رو حل کرد؟ بستگی داره به ابزارهایی که استفاده می‌کنید که من سعی می‌کنم روال‌های متداول رو توضیح بدم اینجا.حالت اول اینه که شما از هیچ کتابخونه خاصی استفاده نمی‌کنید (شاید اعتقاد ندارید بهش یا برای پروژه‌ای که روش کار می‌کنید محدودیت تعریف شده).fun View.setOnSingleClick(delayTime: Long = 700L, action: () -&gt; Unit) {    &#xA;    this.setOnClickListener(object : View.Listener {&#xA;        private var lastClickTime: Long = 0L&#xA;&#xA;        override fun (v: View) {&#xA;            if (SystemClock.elapsedRealtime() - lastClickTime &gt; delayTime) {&#xA;            &#x9;action()&#xA;            &#x9;lastClickTime = SystemClock.elapsedRealtime()&#xA;            }&#xA;        }&#xA;    })&#xA;}یه اکستنشن فاکنکشن نوشتیم که روی همه‌ی ویجت‌ها کار می‌کنه و یه Listener تعریف کردیم که تایم آخرین کلیک رو نگه می‌داره و بر اساس اون تصمیم می‌گیره اکشنی که اختصاص دادید رو اجرا کنه یا نه.اگر براتون سوال شده که چرا از elapsedRealtime استفاده کردیم و سراغ currentTimeMillis نرفتیم می‌تونید اینجا راجع بهش بخونید.نحوه استفاده از این فانکشن هم که حتما خودتون می‌دونید:myView.setOnSingleClick { &#xA;    // کد شما اینجا قرار می‌گیره&#xA; } وقتی Rx وارد می‌شود...حالت بعدی هم که در اینجا مطرح می‌کنم با استفاده از RxJava و RxBinding هست (برای عاشقان Rx).اول توی فایل build.gradle این‌ قسمت رو وارد می‌کنیم:implementation &#34;io.reactivex.rxjava2:rxjava:2.1.2&#34; &#xA;implementation &#34;io.reactivex.rxjava2:rxandroid:2.0.1&#34;&#xA;implementation &#34;com.jakewharton.rxbinding2:rxbinding:2.0.0&#34; &#xA;implementation &#34;com.jakewharton.rxbinding2:rxbinding-kotlin:2.0.0&#34;و بعد می‌ریم سراغ کد:fun View.setOnSingleClick(delayTime: Long = 700L, action: () -&gt; Unit): Disposable {&#xA;    RxView.clicks(this)&#xA;            .throttleFirst(delayTime, TimeUnit.MILLISECONDS)&#xA;            .observeOn(AndroidSchedulers.mainThread())&#xA;            .subscribe { action() }&#xA;}در اینجا اپراتورِ throttleFirst رو یه دربان در نظر بگیرید که در رو باز میکنه یه نفر رو راه میده و تا فاصله زمانی بعدی در رو می‌بنده و هیچ کسی رو راه نمیده. این ساده‌ترین مثالی هست که پیدا کردم :)Marble Diagramبه همین سادگی این مشکل برطرف میشه و یه تجربه بی‌نقص برای کاربر میشه خلق کرد.</description><category>سعید متقی نژاد</category><author>سعید متقی نژاد</author><pubDate>Mon, 10 Aug 2020 00:57:28 +0430</pubDate></item><item><title>نوشتن</title><link>https://virgool.ir/@saeed.mottaqinejad/نوشتن-y6pebq7jjnjx</link><description>نوشتن از کجا شروع میشه؟از اونجایی که تصمیم میگیری بنویسی؟ نه!از اونجایی که فکر میکنی باید بنویسی؟ نه!از اونجایی که دلت میخواد بنویسی؟ نه!نوشتن از جایی شروع میشه که صفحه رو باز میکنی و بدون فکر کردن با تمام وجود دستت رو میبری به سمت کلیدهای زیبا یا زشت کیبورد و اولین حرف و اولین کلمه رو مینویسی.قبل از این اتفاق هیچ چیز دیگه ای وجود نداره به جز توهم. توهم نوشتن. تو ذهنت فکر میکنی داری مینویسی ولی هیچ کاری نمیکنی.فکر میکنی برای نوشتن حتما باید دانشمند باشی ولی میبینی نیستی و بی خیال میشی!فکر میکنی نوشتن برنامه ریزی میخواد. ساعت مشخص میخواد ولی داری اشتباه میکنی.فکر میکنی نوشتن احتیاج به فکر کردن فراوون داره ولی نمیدونی که نباید راجع بهش فکر کنی.فکر میکنی نوشتن، دونستنِ یه سری قواعد رو میخواد، و نمیدونی بی قاعده باید بنویسی.شروع نمیکنی چون میترسی. از اونایی میترسی که مینویسن. از اونایی میترسی که یاد گرفتن نوشتن رو و خوب مینویسن. میترسی مسخره ات کنن. میترسی آبروت جلوی غریبه و آشنا بره ولی نمیدونی هیچ کسی با نوشتن آبروش نمیره حتی با بد نوشتن. بدترین و مبتدیانه ترین و مضحک ترین و بی قاعده ترین حالت ممکن!چون تا حالا ترسیدی ننوشتی. اونایی که نوشتن هم میترسیدن. ولی با ترس شون کنار اومدن. فرار نکردن. همین!چون تا حالا ترسیدی عقب موندی. و چون عقب موندی بیشتر ترسیدی. و بیشتر احساس کردی دیر شده.اگر حتی یک دقیقه از زندگیت مونده باشه، چقدر قشنگ میشه که بنویسی. بنویسی که چی دیدی و چی شنیدی و چی یاد گرفتی و...بنویس. نترس. بنویس. نترس. بنویس. نترس. بنویس. بنویس...</description><category>سعید متقی نژاد</category><author>سعید متقی نژاد</author><pubDate>Thu, 06 Aug 2020 04:53:32 +0430</pubDate></item></channel></rss>