آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ایجاد یک Adapter دیگر! (این سورس رو ببینید) جان من یه نفر جواب بده

احسان منصوری  12 سال پیش  12 سال پیش
0 0

سلام خسته نباشید

من میخوام برای لیست ویو دومم تو پروژه، یه Adapter جدید تعریف کنم. از رو Adapter قبلی که کپی میکنم، هرچی برای لیست ویو اول نوشتم واسه لیست ویو دوم هم اجرا میشه مثلا اگه رویداد کلیک واسه لیست ویو اول نوشته باشم، اون رویداد واسه لیست ویو دوم هم اجرا میشه در صورتی که من چیز دیگه واسه لیست ویو دوم نوشتم. این سورس کد Adapter قبلی هستش. خواستم بدونم دقیقا باید کجاها رو تغییر بدم؟ توی خط سوم که اسم فایل xml رو باید معرفی کنم،  بجای adapter_list هر فایل xml دیگه ای که میسازم و بهش معرفی میکنم بازم داده ها رو از همون xml قبلیه میخونه یعنی adapter_list

public class AdapterNote extends ArrayAdapter {

    public AdapterNote(ArrayList array) {
        super(G.context, R.layout.adapter_list, array);
    }


    private static class ViewHolder {

        public ViewGroup layoutlistroot;
        public TextView  txtpersonname;
        public TextView  txtpersonfamily;
        public TextView  txtpersonid;


        public ViewHolder(View view) {
            layoutlistroot = (ViewGroup) view.findViewById(R.id.layoutlistroot);
            txtpersonname = (TextView) view.findViewById(R.id.txtpersonname);
            txtpersonfamily = (TextView) view.findViewById(R.id.txtpersonfamily);
            txtpersonid = (TextView) view.findViewById(R.id.txtpersonid);
        }


        public void fill(final ArrayAdapter adapter, final StructNote item, final int position) {
            txtpersonname.setText(item.name);
            txtpersonfamily.setText(item.family);
            txtpersonid.setText(item.id);
        }
        }
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ViewHolder holder;
                StructNote item = getItem(position);
                if (convertView == null) {
                    convertView = G.inflater.inflate(R.layout.adapter_list, parent, false);
                    holder = new ViewHolder(convertView);
                    convertView.setTag(holder);
                } else {
                    holder = (ViewHolder) convertView.getTag();
                }
                holder.fill(this, item, position);
                return convertView;
            }
0 0
احتمالا شما این مبحث رو خوب متوجه نشدید!! در view holder به یکسری view رفرنس دادی خب باید در adapter دوم به ویوهای دوم و جدید اشاره کنی و این قسمت رو تغییر بدی + تغییر در fill (12 سال پیش)
0 0
بله میدونم. اینارو تغییر داده بودم با مقادیر جدید. همچنین تغییر توی fill. ولی متاسفانه بازم همون مشکل رو دارم. (12 سال پیش)
0 0
دقیقا میخوای چیکار کنی؟ لیست ویو دومت رو کامل می سازی یا فقط adapter براش ساختی؟ (12 سال پیش)
0 0
لیست ویو دومم رو کامل ساختم با adapter جداگانه و حتی با فایل xml جدا. ولی نمیدونم چرا از فایل xml قبلی میخونه (12 سال پیش)
0 0
توو adapter مربوط به لیست جدیدت، اطلاعاتت رو آپدیت کردی؟ منظورم اینه که ArrayAdapter و ArrayList رو ازجنس Struct مربوط به لیست جدیدت کردی؟ (12 سال پیش)
0 0
بله همشونو آپدیت کردم (12 سال پیش)
0 0
ببین اینجور خطا ها اکثرا از یک اشتباه خیلی کوچیک پیش میاد که پیدا کردن خطا خیلی از برطرف کردنش وقت گیر تره. منم احتمال می دم که هنگام کپی کردن کلاس ها، قسمتی از کدهارو فراموش کردید که تغییر بدید. به نظرم تک تک کلاس های لیست جدیدتون رو خط به خط بررسی کنید. موفق باشید (12 سال پیش)
0 0
بله حل شد. ممنونم (12 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  12 سال پیش
+3 0

برای جواب درست این اطلاعات رو باید میذاشتی: آداپتر اول - آداپتر دوم - کد فراخوانی دو آداپتر

ولی احتمال قوی مشکل شما قبل از بخش adaptere نه داخل آداپتر

احتمال 80% شما هنوز دارید آداپتر دوم رو از arrayAdapter اول پر میکنید

این بخش از کدتون که دارید adapter رو مقدار دهی میکنید رو پیدا کنید:

 adapter = new AdapterNote(G.structArray);

و به جای adapterNote اسم آداپتر جدید رو بذارید

0 0
آقا صادق ممنونم. خیلی کارت درسته. حل شد (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .