بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در پیاده سازی لیست ویو!!

مدیریت گفتگو
javac 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام خدمت دوستان ، شاید این سوال خیلی ساده و ابتدایی بنظر برسه اما من دو سه روز درگیرش بودم نتونستم راه حلی براش پیدا کنم.

قضیه اینه که من یک لیست ویو دارم که میخوام multiple choice item رو روش پیاده کنم یعنی یوزر با زدن چک باکس اون ردیف از لیست ویو رو به انتخاب خودش دربیاره ، یعنی کاربر باید چندتا ردیف رو انتخاب کنه که هر ردیف شامل یک edittext و یک textview هست و درنهایت با زدن یک دکمه تمام ردیف های انتخاب شده+مقادیرشون تو دیتابیس ذخیره بشه.

یکی از مشکلات پیاده سازی این قضیه ، بحث همون الوارهاست وقتی مثلا یکی از ردیف ها انتخاب میشه و کاربر در اون edittext هم یک مقدار وارد میکنه با اسکرول کردن اون مقدار به هم کپی میشه اما مشکل عمده  خوندن مقادیر edittext اون ردیف های انتخاب شده هست .

 

نظرات

Spirit 11 سال پیش
همش زیر سر این EditTextـه :|
javac 11 سال پیش
آره مشکل خوده همین ملعون هست :| چیکارش کنم!؟

پاسخ‌ها 2

Hajhosseini 11 سال پیش

javac  جان توی StructItem که تعریف کردی یک فیلد به نام selected اضافه کن، زمانی که دکمه زده میشه، تمام لیست رو چک کن.
در adapter زمانی که کلیک انجام میشه item.selected رو true کن و زمانی که دکمه کلیک میشه کد زیر رو در اون اجرا کن:

 for(int i=0;i<adapter.getCount();i++){
                    StructItems item = (StructItems) adapter.getItem(i);
                    if(item.selected == true){
                        DoYourWork(item);
                    }
                }

این کد تک تک آیتم هایی که انتخاب شده رو به متد DoYourWork میفرسته

نظرات

javac 11 سال پیش
ممنون . بخش edittext رو چیکار باید کنم؟! مشکل عمده من خوندن مقدارش هست
Hajhosseini 11 سال پیش
خوب وقتی در ادیت تکست متن پر میشه، توی item.text متن رو وارد کنید، مانند item.selected
Spirit 11 سال پیش
علی جان من فکر میکردم کار آسون و بی دردسریه، دیروز گفتم تست کنمش، تو دو ساعتی که سروکله زدم نتونستم پیادش کنم، تا خودتون انجام ندید متوجه عمق فاجعه نمیشید، البته شاید ما بلد نیستم :|
Hajhosseini 11 سال پیش
قول نمیدم ولی اگر تایمم خالی بشه تا آخر هفته آموزشش رو درج میکنم.
javac 11 سال پیش
لامصب بنظر ساده میاد ولی جواب نمیده :( اصن یه وضی! - خیلی ممنون :)
Hajhosseini 11 سال پیش

نمونه رو ساختم، چند مشکل جالب برخوردم:
1: برای استفاده از ادیت تکست باید focus رو از لیست ویو بگیرید.(تست نکردم ولی راه حل داره که میشه در یک تاپیک جدا مطرح کرد)
2: اگر Checked رو روی CheckBox قرار بدید، یعنی متد onCheckedChangeListener ، هربار که لیست بالا و پایین میشه این متد کال میشه، نه فقط زمانی که روی CheckBox کلیک انجام میشه.
راه حل 2: کلیک رو روی LinearLayout بذارید به جای checkBox
راه حل 1: مانند استاد، تغییرات دیتا رو توی یک اکتیویتی دیگه، یا توی یک دیالوگ انجام بدید، توی لیست ویو ادیت تکست نندازید.
اگر مجبورید ادیت تکست در لیست ویو داشته باشید و نتونستید پیاده سازیش کنید، تاپیک بزنید و لینکش رو برای من پ خ کنید.
بقیه چیزا رو هم که خودتون میتونید توی Sample ببینید ;)
لینک دانلود سمپل از دراپ باکس
لینک به زودی پاک میشه، لطفا یکی از دوستان سمپل رو کامل کنه و در یک آپلود سنتر، آپلود کنه که همه بتونن استفاده کنن

توضیحات: در این سمپل، به دلایل بالا من ادیت تکست رو برداشتم، ولی شما میتونید همونجوری که من checked رو تغییر میدم متن مورد نظرتون رو هم تغییر بدید.

نظرات

javac 11 سال پیش
تشکر و سپاس از وقتی که گذاشتید . آره بنظر میرسه برای استفاده از edittext هیچ راهی وجود نداره ، مجبور شدم یه روش دیگه رو پیاده کنم. البته برای checkBox من از متد onClickListener استفاده کردم ومشکل اسکرول ندارم!
Hajhosseini 11 سال پیش
جالبه که onClickListener کار میکنه ولی onCheckedChangeListener درست کار نمیکنه، برای editText هم راه حل وجود داره! باید focus رو خودتون کنترل کنید، لیست ویو به صورت اتوماتیک focus رو تغییر میده.
javac 11 سال پیش
راه حل فوکوس رو که پیدا کردم اما مشکل کپی شدن مقادیر توی الوارها پیش میاد !!
javac 11 سال پیش
یافتم :)! برای این مشکل هم میشه از TextWatcher برای ذخیره مقدار edittext در struct استفاده کرد کرد
javac 11 سال پیش
روش حل فوکوس ادیت تکست در لیست ویو لینک
Hajhosseini 11 سال پیش
این لینک که گذاشتید فیلتره، با توجه به صحبت های استاد مشکلی برای سایت بوجود نمیاره؟ اگر روشش رو در یک تاپیک دیگه آموزش میدادید و لینک اون تاپیک رو اینجا میذاشتید خیلی بهتر بود.
javac 11 سال پیش
شرمنده :| مدیران حذف کنند تا بعدا کامل همینجا بزارم

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .