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

دسترسی به کنترلهایی که بصورت داینامیک حین اجرا تولید میشوند

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

 

با سلام

این عکس قسمتی از برنامه منه، توش باید اطلاعات افراد ذخیره بشه. اما چون تعداد افراد از قبل مشخص نیست، کاربر موقع ورود اطلاعات میتونه به هر تعداد که نیاز باشه ازین فرم ایجاد کنه. یعنی به ازای هر فرد یک فرم اینجوری نیاز هست.

واسه اضافه کردن این فرم مشکلی ندارم، یعنی با یک دکمه یک کپی ازین فرم رو زیرش اضافه یا حذف میکنم. اما مشکل اینجاست نمیدونم چظوری بهشون دسترسی داشته باشم و اطلاعات ورودی رو بخونم.

خیلی خیلی ضروریه ، خواهش میکنم کمک کنید

نظرات

پاسخ‌ها 2

hamed 11 سال پیش

شما می توانید در همان زمانی که در حال ایجاد این ویو ها به صورت مجازی هستید به آنها یک ID اختصاص دهید و برای دسترسی از این ID استفاده کنید. البته نیازی به تعریف ID هم عملا نیست و می توانید مستقیما و بعد از addView کردن آن می توانید روال کلیک و یا روال خواندن اطلاعات و غیره را بنویسید. مثلا:

LinearLayout linearLayout = new LinearLayout(getActivity());
       linearLayout.setOrientation(LinearLayout.HORIZONTAL);
       linearLayout.setGravity(Gravity.RIGHT);
       linearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
       layout.addView(linearLayout);

       linearLayout.setOnClickListener(new OnClickListener() {

               @Override
                public void onClick(View arg0) {

               }
          });
      } 

نظرات

Reza AF 11 سال پیش
مرسی ولی این راه برای موقعیه که یک کنترل اضافه کنیم.یعنی یک layout داشته باشیم و توش مثلا 10 تا باتن اضافه کنیم. اما مشکل من اینه که یک layout دارم و توش چندین layout دیگه اضافه میشه که توش هر ر هم چندین کنترل مثل باتن و تکست هست. یعنی دوتا واسطه هست.یکی layout جد ، دومی layout پدر و درنهایت کنترلها
Mseif 11 سال پیش
شما بهتره قبل از اضافه کردن فرم ها یه فرم به کاربر نشون بدین که تعداد فرم های که نیازه رو وارد کنه بهد شما می تونید اون تعداد رو با حلقه و درون حلقه آیدی های کنترل ها رو ست کنید که به راحتی به کنترل ها دسترسی داشته باشین
Reza AF 11 سال پیش

ArrayList<View> viewss = new ArrayList<View>();        
add_azla.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {


final View child = getLayoutInflater().inflate(R.layout.azla_child, azla_parent, false);

LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
if (child.getParent() != null)
((ViewGroup) child.getParent()).removeView(child); // <- fix
azla_parent.addView(child);
viewss.add(azla_parent.getChildAt(i));

Log.i("LOG", "tedade childha bade add= " + azla_parent.getChildCount());

if (azla_parent.getChildCount() > 2) {
del_azla.setEnabled(true);
}
}
});

ببینید من هرکدوم از فرمها رو توی آرایه اضافه میکنم، یعنی تعدادشون رو دارم

الان هرکدوم از خونه های آرایه حاوی یک دونه از فرمهاست. اما مشکل اینجاست نمیتونم به عناصر داخل فرم دسترسی داشته باشم. یعنی مثلا نمیتونم متن editview رو بگیرم.

نظرات

Spirit 11 سال پیش
به نظرم بهترین راه استفاده از روشی هست که استاد توی آموزش CustomSpinner استفاده کردن.
Reza AF 11 سال پیش
کلا اون قسمت رو فراموش گرئم، امشب دوباره میبینمش.امیدوارم حل بشه
hamed 11 سال پیش
راه حل Spirit منطقی تر به نظر می رسه و می تونی به راحتی هر تعداد که خواستی از روی کنترلر خودت بسازی. راه حل های دیگه ای هم می تونه وجود داشته باشه مثلا اینکه فرم های جدید در لی اوت جدید باز بشن و همزمان همه فرم ها در دسترس نباشن.

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