بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

لیست ویو ، اما با سورسی ساده و آسون تر !

مدیریت گفتگو
مجتبی یگانه 12 سال پیش
آخرین تغییر: 11 سال پیش

دوستان راستش من ، طرز کاره آموزش لیست ویو رو نفهمیدم ، خوب دارم سعی میکنم بفهمم اما یه روش دیگه هم به ذهنم رسید ، گفتم شاید برای شما هم جالب باشه :)

طرز کاره پروژه :

در یک حلقه ی For در زمان اجرا یک دکمه و یک تکست ویو ایجاد میشود ، یعنی شی در زمان اجرا ، به تعداد نیاز ساخته میشه و به یک اسکرول ویو اضافه میشه 

یعنی ما کار رو خودمون دستی انجام میدیم ، به تعدادی که نیاز داریم زمان اجرا شی ایجاد میکنیم و توی یک اسکرول ویو میزاریمش !

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final LinearLayout lnr = (LinearLayout) findViewById(R.id.linear1);

        for (int i = 1; i < 20; i++)
        {
            final TextView txt1 = new TextView(this);
            txt1.setText("آیتم شماره" + i);
            txt1.setTag("" + i);
            txt1.setBackgroundResource(R.drawable.txt_style);
            lnr.addView(txt1);
            txt1.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(RotateActivity.this, ActivityShow.class);
                    intent.putExtra("id", "" + txt1.getTag());
                    RotateActivity.this.startActivity(intent);
                }
            });
            //---------------------------------------
            Button btndelete = new Button(this);
            btndelete.setText("حذف");
            btndelete.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    lnr.removeView(txt1);
                    lnr.removeView(v);
                }
            });
            lnr.addView(btndelete);

        }

    }

اگه شما هم روش ساده تری برای ساخت LISTVIEW بلدید ، بگید استفاده کنیم ! :)

نظرات

پاسخ‌ها 2

sadeghbarout 12 سال پیش

البته روشت یه خوبی داره و یه بدی

بدیش اینکه همه تنظیمات view  ها رو باید با کد انجام بدیم ( margin , color , size ,...)

خوبیش اینکه (البته خوبی نسبت به روشی که میخواد در ادامه بگم) هر چیزی بخوایم میتونیم اضافه کنیم

اما یه راهی که به گمونم چقدر پبش یکی از بچه ها هم لینک گذاشته بود اینجوری بود (البته هر عضو  این لیست فقط شامل یه text خالیه) :

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final String[] name = new String[]{ "item1", "item2", "item3", "item4", "item5" };
        ListView mylist = (ListView) findViewById(R.id.lv_name);

        mylist.setAdapter(new ArrayAdapter<String>(ActivityMain.this, android.R.layout.simple_list_item_1, name));

        mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                Toast.makeText(getApplicationContext(), "value : " + name[position] + " in position :" + position + " clicked !", Toast.LENGTH_SHORT).show();
            }

        });
    }

نظرات

مجتبی یگانه 12 سال پیش
درسته ، اون "یکی از بچه ها" که میگید خودمم ، من این رو تو نت دیدم ، اما مشکلش اینه که فقط یه تکست ویو هست ، اما همون طور که دیدید ، من توی این پروژه ی دکمه هم قرار دادم ، برای اینکه این یه بدی که شما میگی نباشه ، 1 - از یه Xml استفاده کردم 2- میشه یه نمونه از یک تکست ویو که روی فرم هست کپی گرفت که هنوز سورسی واسه دومی پیدا نکردم ! پس میگـــــــــــــم => بــــــــــــــــــزودی !
sadeghbarout 12 سال پیش
ا خودت بودی؟ D: در نکمیل صحبتت میشه گفت یه کار بهتر میشه کرد اونم اینکه مثل استاد یه فرم دیگه طراحی کنیم و با یه Inflater اونو به یه View تبدیل کنیم . یا یه CustomeView طراحی کنیم که تقریبا همون روش 2 تو ه ;) البته یادمون نره کل اون مشکلات به خاطر این بود که اگه آیتم های زیاد رو بخواد یه جا لود کنه برنامه سنگین میشه! پس این روش ها فقط برای آیتم های کم مناسبه ;)
sadeghbarout 12 سال پیش
اقا راستی اسمت چیه؟ زیاد با هم برخورد کردیم امروز D: من که مشخصه صادقم ;)
مجتبی یگانه 12 سال پیش
خوش وقتم :) ، اسم منم alu فامیلیمم که تابلوئه دیگه 0075 ، صادق جان یه کلیک رو alu0075 بکنی ، میری تو صفحه مشخصات :)
مجتبی یگانه 12 سال پیش
خوب اسکرول ویو یه جا کار میکنه ؟ مطمئنی ؟ من فک کنم همون روش الواریه آآآ !
sadeghbarout 12 سال پیش
منم خوش وقتم alu خان D: نه مجتبی جون مطمئن نیستم باید بپرسیم ولی اون یه مشت کدی که استاد نوشت فکر کنم برای همین الواری شدنش بود
sadeghbarout 12 سال پیش
الان با همون کلک استاد (قرمز کردن یکی از الوارها) تست کردم. نه حالت الواری نداشت و همه رو یه جا لود میکنه ;)
مجتبی یگانه 12 سال پیش
ولش کن بابا کی به حافظه کار داره ، خودت راحت باش ! :|
uncocoder 12 سال پیش

شما فرض کنید که می خواید لیست Contact های گوشی رو Load کنید و توی یک لیست نشون بدید، روش شما گوشی رو می ترکونه. روش باید از نظر Memory بهینه باشه که ListView هست.

توجه داشته باشید که ListView یکی از قسمت های گیج کننده اندروید هست اما چرا؟ چون قبلاً در هیچ Framework ـی چنین روشی مطرح نشده بود و همیشه همه جا، مشکل این بود که چجوری یک لیست با قیافه دلخواه و Optimize شده رو نشون بدیم، که برای اولین بار با کمترین Foot Print در اندروید معرفی شد.

نظرات

احمد 11 سال پیش
باتشکر از استاد و دوستان من یه مبتدیم و دو سه بار این قسمت رادیدم و متوجه نشدم ولی 100 بار دیگه میبینم و میپرسم تا یاد بگیرم بنظرم مابقی مبتدی ها هم بهتر این مسیرا را برن چون اخرش اخرش یه روزی نیاز پیدا میکنن....البته یادگرفتن همیشه لذت بخشه چه اشکالی داره این روش ها هم یاد بگیریم.

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