یک لیست ویو و چند دیزاین
سلام من میخوام با کلیک روی هر یک از باتن هام اداپترم با توجه به اینکه روی چه دکمه ای کلیک شده اطلاعات را روی یک ویو خاص ولی روی یک لیست ویو ادپت کنه واضح تر بگم میخوام با کلیک روی هر یک از باتن هام لیست ویوم سطر هاش گرافیکش فرق داشته باشند و اگر روی باتن دیگه کلیک میکونم سطرهای دیگه رو تو لیست ویوم نمایش بده
یعنی می خواهی چند نوع دیزاین رو داشته باشی؟ اگر دیزاین ها با هم نمایش داده نمی شن که ادپتر جداگانه می خواد اما اگر با هم نمایش داده می شن چند راهکار داری:
1. اگر نهایتا سه دیزاین هستن یه لیست ویو بزن و لیست ویو دوم و لیست ویو سوم رو به عنوان هدر و فوتر لیستویو اصلی قرار بده
2. از لیست ویو توی لیست ویو استفاده کن یا از لیست ویو کشویی
3. می توی توی adapter.xml مربوط به لیست ویو چند لایه اصلی بذاری و بهش بگی اگر محتوا x بود لایه اول رو نمایش بده و بقیه رو ll.setvisivbility(View.Gone) کن اگر y بود لایه دوم رو نمایش بده و لایه اول و سوم و چهارم رو gone کن و به همین ترتیب
LineaLayout ll_main = (LinearLayout) findviewbyid(R.id.ll_main);
ll_main.setVisivility(View.GONE);
پیشفر همه رو GONE کن و فقط اوین رو که می خواهی Visible کن چون نمایشش پروسه می گیره البته همچنان پروسه اضافی رو داری همچنین View رو هم با V بزرگ بنویس
این یه راهیه که به ذهن من رسید شاید راه های بهتری هم باشه:
واسه هر گرافیکی که میخوای یک فایل xml بساز با عناصر و id های یکسان حالا چینش ها و ظاهر های مختلفی که میخوای
داخل کلاس G این کدو بذار
public class G extends Application {
public static int LAYOUT_ID;
@Override
public void onCreate() {
super.onCreate();
LAYOUT_ID = R.layout.adapter_layout_1;
}
}
متدهای getView و سازنده رو رو داخل Adapter به این صورت تغییر بده:
public AdapterTest(ArrayList<StructTest> array) {
super(G.context, G.LAYOUT_ID, array);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructTest item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(G.LAYOUT_ID, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
بعد داخل متد setOnClickListener هر Button که میخوای id لایه ای که مد نظرت هستو داخل G.LAYOUT_ID قرار بده مثل کد زیر کلا 2 خط کد زیر رو داخلش قرار بده
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
G.LAYOUT_ID = R.layout.adapter_layout_1;
lstContent.setAdapter(adapter);
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
G.LAYOUT_ID = R.layout.adapter_layout_2;
lstContent.setAdapter(adapter);
}
});
فقط دقت داشته باش فایل های xml که میسازی همشون دارای id های یکسان و عناصر یکسان باشن
در مورد مشکلت که میخوای یک عدد رو داخل یک متغییر از جنس String بریزی چنتا راه هست
اولیش اینه
String str = 5555 + "";
int x = 6666;
String str2 = x + "";
راه دومش اینه
String str = String.valueOf(5555);
int x = 6666;
String str2 = String.valueOf(x);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .