مشکل در پیاده سازی لیست ویو!!
سلام خدمت دوستان ، شاید این سوال خیلی ساده و ابتدایی بنظر برسه اما من دو سه روز درگیرش بودم نتونستم راه حلی براش پیدا کنم.
قضیه اینه که من یک لیست ویو دارم که میخوام multiple choice item رو روش پیاده کنم یعنی یوزر با زدن چک باکس اون ردیف از لیست ویو رو به انتخاب خودش دربیاره ، یعنی کاربر باید چندتا ردیف رو انتخاب کنه که هر ردیف شامل یک edittext و یک textview هست و درنهایت با زدن یک دکمه تمام ردیف های انتخاب شده+مقادیرشون تو دیتابیس ذخیره بشه.
یکی از مشکلات پیاده سازی این قضیه ، بحث همون الوارهاست وقتی مثلا یکی از ردیف ها انتخاب میشه و کاربر در اون edittext هم یک مقدار وارد میکنه با اسکرول کردن اون مقدار به هم کپی میشه اما مشکل عمده خوندن مقادیر edittext اون ردیف های انتخاب شده هست .
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 میفرسته
نمونه رو ساختم، چند مشکل جالب برخوردم:
1: برای استفاده از ادیت تکست باید focus رو از لیست ویو بگیرید.(تست نکردم ولی راه حل داره که میشه در یک تاپیک جدا مطرح کرد)
2: اگر Checked رو روی CheckBox قرار بدید، یعنی متد onCheckedChangeListener ، هربار که لیست بالا و پایین میشه این متد کال میشه، نه فقط زمانی که روی CheckBox کلیک انجام میشه.
راه حل 2: کلیک رو روی LinearLayout بذارید به جای checkBox
راه حل 1: مانند استاد، تغییرات دیتا رو توی یک اکتیویتی دیگه، یا توی یک دیالوگ انجام بدید، توی لیست ویو ادیت تکست نندازید.
اگر مجبورید ادیت تکست در لیست ویو داشته باشید و نتونستید پیاده سازیش کنید، تاپیک بزنید و لینکش رو برای من پ خ کنید.
بقیه چیزا رو هم که خودتون میتونید توی Sample ببینید ;)
لینک دانلود سمپل از دراپ باکس
لینک به زودی پاک میشه، لطفا یکی از دوستان سمپل رو کامل کنه و در یک آپلود سنتر، آپلود کنه که همه بتونن استفاده کنن
توضیحات: در این سمپل، به دلایل بالا من ادیت تکست رو برداشتم، ولی شما میتونید همونجوری که من checked رو تغییر میدم متن مورد نظرتون رو هم تغییر بدید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .