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

اضافه کردن کنترل بصورت داینامیک در لیست ویو

116661  10 سال پیش  10 سال پیش
+1 0

سلام

وقت بخیر

با استفاده از آموزشهای تصویری لیست ویو ساختم و داخلش علاوه بر تکست ویو و سایر چیزها یک LinearLayout هم قرار دادم و قصد دارم بصورت داینامیک داخلش چک باکس اضافه کنم 

این هم کد

اما عمل نمی کنه

لطفا کد ببینید ، تصور میکنم باید چیز دیگه ای بجای G.context قرار بدم

تشکر

 	public LinearLayout ll_b;
public ViewHolder(View view)
{
//
//
//
ll_b=(LinearLayout)view.findViewById(R.id.ll_b);
}
public void fill(ArrayAdapter<Struct_Contact> contact,Struct_Contact item,int position)
{
//
//
//
add_b(item.n);
}
void add_b(int n)
{
for (int i = 1; i <= n; i++) {
// LinearLayout layout = (LinearLayout)findViewById(R.id.ll_tel);
ll_b.setOrientation(LinearLayout.VERTICAL);
CheckBox chk = new CheckBox(G.context);
chk.setText("CheckBox "+i);
ll_b.addView(chk);
}
}

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
مسعود فرمانی  10 سال پیش
0 0

نیازی به اضافه کردن LinearLayout اضافی نیست

  1. به LinearLayout اصلی لایه ای که برایAdapter ساختین یک ID اختصای بدید...مثلا main
  2. در کلاس ViewHolder یک pointer از نوع LinearLayout  و یکی از نوع CheckBox به عنوان فیلد کلاستون بسازید
  3. دقیقا مانند بقیه کنترل های لایه،در Constuctor کلاس ViewHolder این pointer رو هم از طریق view.findViewById به LinearLayout مورد نظر ارتباط بدید و CheckBox pointer رو new کنید و ApplicationContext رو به سازنده CheckBox ارسال کنید
  4. بسته به اینکه الگوریتمتون چیه و چطور میخواید این CheckBox به نمایش در بیاد (مثلا در پاسخ به یک رویداد یا اینکه همون اول برنامه و ...) میتونید این CheckBox رو به LinearLayout لایه Adapter به عنوان childView اضافه کنید..مثلا من در تکه کد زیر در پاسخ به کلیک روی chkDone این چک باکس جدید رو اضافه میکنم
  5. باز هم بسته به هدفتون و.. میتونید برای این چک باکس متن یا width propertyو ... تعریف کنید که من فقط اضافه کردن یک CheckBox خام رو گفتم...
     
    public static class ViewHolder {

    TextView txtTitle;
    TextView txtDesc;
    CheckBox chkDone;
    LinearLayout main;
    CheckBox chk;


    public ViewHolder(View view) {
    main = (LinearLayout) view.findViewById(R.id.main);
    chk = new CheckBox(G.context);//اینجا G.context برابر با application context هست

    txtTitle = (TextView) view.findViewById(R.id.txtTitle);
    txtDesc = (TextView) view.findViewById(R.id.txtDesc);
    chkDone = (CheckBox) view.findViewById(R.id.chkDone);
    chkDone.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
    main.addView(chk);
    }
    });

    }

0 0
البته اگه بخواین نیاز هست که در بقیه قسمت های برنامه تغییراتی بدید که مثلا وقتی view از صفحه خارج شد و دوباره وارد شد بدون این CheckBox اضافی باشه و..... (10 سال پیش)

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