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

سلام استاد و دوستان عزیز.

چجور میشه این شرط رو هنگام addیا edit کردن یه contact بررسی کرد که اگه اون نام قبلا توی لیست وجود داشته باشه ، دیگه اجازه ی ثبت نده و ارور نمایش بده؟

مثلا من الان یک contact رو اضافه کردم و دوباره اومدم همون رو نوشتم و اد کردم و اضافه کرد. که این عملا اتفاق جالبی نیست و یا اومدم یک contact رو ویرایش کردم و یکی نام از کانتکت‌ها رو اونجا نوشتم که از قبل بود ولی ثبت شد و اروری مبنی بر تکراری بودن کانتکت نداد.

اگه متوجه سوالم نشدید بگید تا بیشتر توضیح بدم. ولی فکر کنم واضح پرسیده باشم. 

در پایین عکس زمانی که یک نام رو دوبار add کردم.

اینم عکس زمانی که یکی از کانکت‌ها رو ویرایش کردم و نام یکی از کانکت‌ها رو به جاش گذاشتم.

احمد اسماعیلی ۳۱ اردیبهشت ۱۳۹۹، ۲۰:۰۸

سلام هم دوره ای عزیز 

حقیقت الگوریتم‌های زیادی میشه در نظر گرفت برای این کار 

و‌ از اونجایی که من دوست داشتم کار شما سریع‌تر راه بیفته به ذهنم رسید ساده‌ترین روش رو بگم 

(البته چون با گوشی در حال حاظر هستم و کمی نوشتن کد سخت هست به همین دلیل اگر که متوجه نشدین حتما اعلام کنین من کد رو می‌نویسم واستون)

اما ساده‌ترین روش ممکن چی هست؟

این هست که شما بیاین با ی حلقه فور یا وایل( هر کدام که راحت‌تر هستید) 

داخل لیست کانتکت هاتون پیمایش کنین یعنی شرط حلقه این باشه که بنویسید listContact.size(); و سپس در بدنه حلقه شرطی بنویسید که اگر listContact.get(i).equalsIgnoreCase(Name Daryafti بود (یعنی اگر آیتم i ام ما برابر بود با رشته دریافتی (که میتونین برای این کار از متدی در آداپتور استفاده کنین که رشته دریافتی رو از متد مربوطه دریافت نمایید) پس بیا و مقدار رو اضافه نکن و بنویسید else (در غیر این صورت ) بیا و .add کن روی لیست مربوطه در آداپتور 

اگر منظور من رو متوجه نشدین حتما اعلام کنین تا به صورت کد واستون توضیح مفصل‌تری بدم 

موفق و پیروز باشین 

پوریا شفیعی ۳۱ اردیبهشت ۱۳۹۹، ۲۱:۲۴

این الگوریتم پیاده سازی شده برای اینکه مخاطب تکراری ادد نشه 

خدمت دوستانی که اینده ممکن هست به چنین مشکلی برخورد کنند.

addNewContactBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0; i <list.size() ; i++) {
                    if(list.get(i).equalsIgnoreCase(fullNameEt.getText().toString())){
                        Toast.makeText(v.getContext(),"این کاربر وجود دارد",Toast.LENGTH_SHORT).show();
                        return;
                    }
                    else {
                        if (fullNameEt.length() > 0) {
                            if (editingItemPosition > -1) {
                                adapter.opdatecontact(fullNameEt.getText().toString(),editingItemPosition);
                                editingItemPosition = -1;
                                addNewContactBtn.setImageResource(R.drawable.ic_add_white_24dp);
                            } else {
                                adapter.addNewContact(fullNameEt.getText().toString());
                                recyclerView.scrollToPosition(0);
                            }
                            fullNameEt.setText("");
                        }
                    }
                }
            }
        });

 

بهترین پاسخ
پوریا شفیعی ۰۱ خرداد ۱۳۹۹، ۱۷:۰۹

سلام

پوریا تو این کدی که نوشتی بهتر نیست که فقط اون قسمت که داره چک میکنه ایتم تکراریو تو حلقه بزاریم..؟؟

 

چون الان کد اد کردن و اپدیت کردن ایتم هم تو حلقه گزاشتیم و این مشکل ساز میشه...درواقع تو حلقه گیر میکنه...

تست هم کنی اپ فریز میشه و در اخر فورس کلوز میده...

اگه اون قطعه کد رو بیاریم بیرون از حلقه اکی میشه...

 

  addNewContactBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0; i <list.size() ; i++) {
                if(list.get(i).equalsIgnoreCase(fullNameEt.getText().toString())){
                    Toast.makeText(v.getContext(),"این کاربر وجود دارد",Toast.LENGTH_SHORT).show();
                }
            }
            if (fullNameEt.length() > 0) {
                if (editingItemPosition > -1) {
                    adapter.opdatecontact(fullNameEt.getText().toString(),editingItemPosition);
                    editingItemPosition = -1;
                    addNewContactBtn.setImageResource(R.drawable.ic_add_white_24dp);
                } else {
                    adapter.addNewContact(fullNameEt.getText().toString());
                    recyclerView.scrollToPosition(0);
                }
                fullNameEt.setText("");
            }
        }
    });

 

Hamidreza Kermani ۱۹ شهریور ۱۳۹۹، ۱۸:۲۳