استفاده از چند layout در لیست ویو
میخوام در بین آیتم های لیست ویو مثلا آیتم سوم یک layout متفاوت نشون بدم :
item1
item2
item3>>
item4
به این صورت در متد getView هرکاری کردم نشد:
if(position % 3 == 0){
//inflate another layout
}else{
//inflate primary layout
}
چون که در متد fill عناصر روی لیست ویو مربوط به layout اصلی رو مقدار دهی کردم وقتی layout عوض میشه خطای nullPointException رخ میده ، توی متد fill هم مقدار position رو چک کردم اما بازم خطا میده........
تشکر:)
خیلی روش فکر نکردم ، اما با یک نگاه کلی رو ساختار آداپتورمون به این نتیجه رسیدم حتی اگه درست کار کنه ، با الواری بودن اش مشکل خواهید داشت ، پس استفاده از 2 xml ممکن نیست
اما یه کار دیگه میشه انجام داد ، شاید یه جور دور زدن مشکل باشه !
شما دو layout رو در یک item_style.xml قرار بدید ، به طور پیشفرض دومی که خاص تر هست رو مخفی کنید ، بعد بگید
if(item.position%3==0){
LinearA.setVisibility(View.GONE);
LinearB.setVisibility(View.VISIBLE);
fillSpecialLayout();
}
سلام
از کد های زیر استفاده کن
من با این کد ها تونستم ظاهر اولین عنصر لیست ویو و حتی ظاهر یکی درمیون عناصر را تغییر بدم
توی adapter باید بذاری
@Override
public int getItemViewType(int position) {
// Define a way to determine which layout to use, here it's just evens and odds.
if (position == 0) {
return position % getCount();
} else {
return 1;
}
}
@Override
public int getViewTypeCount() {
return 2; // Count of different layouts
}
اینم باید توی متد getView بذاری
if (getItemViewType(position) == 0) {
convertView = G.inflater.inflate(R.layout.view1, null);
} else {
convertView = G.inflater.inflate(R.layout.view2, null);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .