کسی میتونه custom listview رو به زبان ساده تر از استاد توضیح بده لطفا !؟
سلام دوستان. من بیشتر از دو هفتست که گیر کردم توی مبحث لیست ویو. متاسفنه یکم سخت یاد میگیرم و هرچی آموزش های خارجی و ایرانی رو نگاه میکنم متوجه نمیشم یه جاهاییش رو، آموزش های استاد هم بیست بار نگاه کردم (پنج بار در روز، پنج بار در شب، قبل از خواب، بعد از خواب، قبل از غذا، بعد از غذا و...) ! به علت تو درتو بودن کلاسها و متد ها گیج میشم که چی به چی هست ! استاد هم به هرچی میرسند میگن بعدا توضیح میدم، و رد میشن میرن آخرش هم توضیح نمیدن یا وقتی توضیح میدن که مغزم کاملا قفل کرده و دیگه مقدار دهی نمیشه ! یا یک متد رو اشتباه مینویسند، بعد موقع امولیت کردن به ارور میخورند و میان دوباره یه جاهایش رو تند تند عوض میکنند، و کلا آدم هرچی سعی کرده ببافه رشته میشه میره ! یا میان میگن که "من دوست دارم این رو اینطوری بنویسم" که اینجا هزارتا سوال برای من پیش میاد که آخه چرا ؟!؟؟؟؟؟؟ یا تند تند یک سری متد مینویسند و توضیح نمیدند که چرا اون رو نوشتند و یا من کلا خیلی از جاها نمیفهمم که کدام متد رو باید در کدام قسمت از کلاس باید بنویسم دقیقا که توی اجراش به ارور و اشتباه برخورد نکنم. خود استاد این جور جاها یک توضیح کوتاه میدند، ولی خیلی کوتاهه و من متوجه نمیشم)
سایت های خارجی مبحث لیست ویو رو با 2تا کلاس و 2تا لی آوت توضیح میدند، و خیلی از روش استاد کدهاشون کمتره، چرا روش استاد انقدر پیچیده و سخته !؟
تروخدا اگه کسی میتونه یکم ساده تر بیاد توضیح بده. کل اینترنت رو زیر و رو کردم ولی درست متوجه نمیشم که این سیستم چجوری درست میشه.
بعد از این همه مدت تلاش فقط این هارو متوجه شدم:
برای لیست ویو ما به کلاس Struvtnote احتیاج داریم که یه مقادیر رو توی خودش نگه داره ! چرا به این کلاس احتیاج داریم آخه !؟
برای لیست ویو ما به کلاس G هم احتیاج داریم، خوب دقیقا چره !؟ میدونم چون کلاس G زودتر از بقیه کلاسها اجرا میشه و میدونم اطلاعات لیست ویو رو در این کلاس قرار میدیم، خوب چرا همش رو در این کلاس قرار نمیدیم ؟!
برای لیست ویو ما به arrayadapter نیاز داریم، arrayadapter میاد اطلاعات لیست رو میخونه و یا بارگذاری میکنه
برای لیست ویو به یک کلاس و لی آوت نیاز داریم که یدونه از لیست ویو هارو داخلش قرار دادیم که بقیه رو از روی همین یدونه میسازه، و یک لی آوت و کلاس دیگه هم نیاز داریم که باید خالی باشه و اونجا لیست ویو هارو زیر هم نشون بده...
برای لیست ویو به متد inflator نیاز داریم که مثل الوارهای زیر کشتی تعداد محدودی لیست ویو رو مدیریت کنه تا تعداد لیست ویو ها زیاد نشه... این قسمت رو خوب متوجه شدم.
غیر از این چیزهایی که گفتم، دیگه چیزی متوجه نشدم تقریبا.
اگه کسی میتونه ساده تر توضیح بده هم به من لطف کرده هم به بنده خداهایی که مثل من در آینده گیرخواهند کرد... (چون توی انجمن هم سرچ کردم چندتا مورد از بچه ها رو دیدم که گیرکردند ولی دوستان دیگه بهشون گفته بودند که سخته و بیشتر تلاش کنند. خوب من هم بیشتر تلاش کردم ولی یکم بیشتر تلاش کنم، میشه یک سال که پشت یه همچین چیز ساده ای متوقف شدم.)
اگر کسی هم توضیح نداد، کلا فدای سرتون، میدونم خیلی سخت و وقت گیر هست. و این فقط مشکل خودم هست که سخت یاد میگیرم.
با تشکر.
public class MenuCustomAdapter extends BaseAdapter {
Context context;
String[] array;
LayoutInflater inflater = null;
public MenuCustomAdapter(Context context, String[] array)
{
this.context = context;
this.array = array;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return this.array.length;
}
@Override
public Object getItem(int i) {
return array[i];
}
@Override
public long getItemId(int i) {
return i;
}
class Holder {
TextView item;
ImageView img_item_menu;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View rowView = inflater.inflate(R.layout.list_item_menu, null);
Holder holder = new Holder();
holder.item = (TextView)rowView.findViewById(R.id.item);
holder.img_item_menu = (ImageView)rowView.findViewById(R.id.img_item_menu);
holder.item.setTypeface(FontHelper.Fabrica);
holder.item.setText(this.array[i]);
if( i == 0 )
{
holder.img_item_menu.setImageResource(R.drawable.setting_slider);
}else if( i == 1 )
{
holder.img_item_menu.setImageResource(R.drawable.about_slider);
}else if( i == 2)
{
holder.img_item_menu.setImageResource(R.drawable.exit_slider);
}
return rowView;
}
}
public class MenuCustomAdapter extends BaseAdapter {
Context context;
String[] array;
LayoutInflater inflater = null;
public MenuCustomAdapter(Context context, String[] array)
{
this.context = context;
this.array = array;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return this.array.length;
}
@Override
public Object getItem(int i) {
return array[i];
}
@Override
public long getItemId(int i) {
return i;
}
class Holder {
TextView item;
ImageView img_item_menu;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View rowView = inflater.inflate(R.layout.list_item_menu, null);
Holder holder = new Holder();
holder.item = (TextView)rowView.findViewById(R.id.item);
holder.img_item_menu = (ImageView)rowView.findViewById(R.id.img_item_menu);
holder.item.setTypeface(FontHelper.Fabrica);
holder.item.setText(this.array[i]);
if( i == 0 )
{
holder.img_item_menu.setImageResource(R.drawable.setting_slider);
}else if( i == 1 )
{
holder.img_item_menu.setImageResource(R.drawable.about_slider);
}else if( i == 2)
{
holder.img_item_menu.setImageResource(R.drawable.exit_slider);
}
return rowView;
}
}
--------------------------- list item menu ------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:background="#912070"
android:padding="8dp"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/img_item_menu"
android:layout_width="wrap_content"
android:layout_margin="5dp"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="10pt"
android:textColor="@android:color/white"
android:padding="10dp"
android:gravity="left|center_vertical"
/>
</LinearLayout>
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .