آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

Reza AF  11 سال پیش  11 سال پیش
0 0

 

با سلام

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

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

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

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
hamed  11 سال پیش
+2 0

شما می توانید در همان زمانی که در حال ایجاد این ویو ها به صورت مجازی هستید به آنها یک 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) {

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

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 رو بگیرم.

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

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