بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
اضافه کردن کنترل بصورت داینامیک در لیست ویو
سلام
وقت بخیر
با استفاده از آموزشهای تصویری لیست ویو ساختم و داخلش علاوه بر تکست ویو و سایر چیزها یک 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 اضافی نیست
- به LinearLayout اصلی لایه ای که برایAdapter ساختین یک ID اختصای بدید...مثلا main
- در کلاس ViewHolder یک pointer از نوع LinearLayout و یکی از نوع CheckBox به عنوان فیلد کلاستون بسازید
- دقیقا مانند بقیه کنترل های لایه،در Constuctor کلاس ViewHolder این pointer رو هم از طریق view.findViewById به LinearLayout مورد نظر ارتباط بدید و CheckBox pointer رو new کنید و ApplicationContext رو به سازنده CheckBox ارسال کنید
- بسته به اینکه الگوریتمتون چیه و چطور میخواید این CheckBox به نمایش در بیاد (مثلا در پاسخ به یک رویداد یا اینکه همون اول برنامه و ...) میتونید این CheckBox رو به LinearLayout لایه Adapter به عنوان childView اضافه کنید..مثلا من در تکه کد زیر در پاسخ به کلیک روی chkDone این چک باکس جدید رو اضافه میکنم
- باز هم بسته به هدفتون و.. میتونید برای این چک باکس متن یا 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);
}
});
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .