تغییر آداپتر در لیست ویو
سلام دوستان
در لیست ویویی که ایجاد کردم می خوام اولین الوار، دهمین الوار و ... رو از یه آداپتر دیگه بخونه، کدهای لیست ویو متد getView رو بصورت زیر تغییر دادم:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructBazarche item = getItem(position);
if (convertView == null) {
if (position == 0 || position == 10 || position ==20) {
convertView = G.inflater.inflate(R.layout.custom_adapter, parent, false);
} else {
convertView = G.inflater.inflate(R.layout.adapter, parent, false);
}
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
مشکلی که وجود داره اینه که الواری که وارد میشه رو باز تغییر میده، یعنی هر هفتا الواری که رد میشه (تعداد کل الواری که در کل صفحه جا میشن) یکبار الوار جدید میشه!
بنظرتون راه حلش چیه؟
طبق لینکی که در بالا دادم کاری که @atfadev رو انجام دادم، مشکلی که داشت ویو رو میتونستم یکی در میون و یا سه تا در میون عوض کنم و بیشتر از اونو برنامه کرش میکرد، کد های زیر:
@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{return1;
}
}
@Override
public int getViewTypeCount(){
return2;
// 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);}
کار دیگه ای که انجام دادم ویو دومی که میخواستم داخل برنامه قرار بگیره رو زیر آداپتر اصلی قرار دادم و قابلیت نمایششو برای position های صفرم، دهم، ... VISIBLE قرار دادم و برای بقیه position ها GONE قرار دادم، با این کار مشکلم برطرف شد و ویو دوم رو برنامه نشون میداد اما ایرادی که داره اینه که اطلاعات اون ردیفی که ویو دوم رو نشون میدم هم مخفی میشه و تا حالا تنونستم اطلاعاتشو به ردیف بعدی منتقل کنم،
ممنون میشم اگه کسی تاحالا این کارو انجام داده راهنمایی کنه،
با تشکر
باید posotion های بخش پذیر بر 10 رو پیدا کنید < و روی اونها تغییرات رو ست کنید <
آموزش های استاد در مورد بخش پذیری رو ببینید <
if(position > 0 || ((position %10) == 0)){ convertView = G.inflater.inflate(R.layout.custom_adapter, parent,false);
}
else{ convertView = G.inflater.inflate(R.layout.adapter, parent,false);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .