انجمن سایت کلیدستان



AlertDialog در لیست ویو (در برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۹، ۱۱:۵۴ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: mpi
آخرین ارسال: admin
پاسخ 4
بازدید 1046

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
AlertDialog در لیست ویو (در برنامه نویسی اندروید)

AlertDialog در لیست ویو (در برنامه نویسی اندروید)

#1
سلام دوستان عزیز
من یک لیست ویو دارم که شامل چند آیتم میشه (که با استرینگ تعریفشون کردم) میخوام وقتی روی هر کدوم از آنها اشاره میشه
با استفاده از case ، یک AlertDialog نمایش داده بشه .
همین
Toast رو میتونم نمایش بدم ولی AlertDialog رو نمیدونم چطوری تو case بکار ببرم
با تشکر
پاسخ

AlertDialog در لیست ویو (در برنامه نویسی اندروید)

#2
سلام.
منظورتون استفاده از switch case است ؟
بهتر است کمی بیشتر توضیح بدهید.
اگر کدها رو ذکر کنید بهتر است.
معمولا در ListView ، بر اساس position که شماره متناظر با item از ListView را به ما می دهد، محتوای متفاوت برای item های مختلف را نمایش می دهیم. اگر کلیک بر روی کل item مورد نیاز باشد، کد مشابه کد زیر را می نویسیم :

کد پی‌اچ‌پی:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @
Override
            
public void onItemClick(AdapterView<?> parent, final View view,
                int position, long id) {                        
                        Intent i = new Intent(getApplicationContext(), SecondActivity.class);
                        number_of_keys = String.valueOf(position+1); 
                        i.putExtra("key_number", number_of_keys);
                        startActivity(i);       
            }

        }); 

که در آن، lv همان ListView مورد نظرمان می باشد.
ولی اگر اشاره بر روی یکی از عناصر موجود در خود item مورد نظرمان باشد (نه کل item)، باید یک Adapter برای ListView تعریف کرده و بعد روش setOnItemClickListener را در کدهای Adapter ذکر کنیم (روش setOnItemClickListener  را برای عنصر مورد نظرمان که در ساختار item تعریف شده، می نویسیم). یک کد رو براتون مثال می زنم :

کد پی‌اچ‌پی:
private class MyAdapter extends ArrayAdapter<String>{

        public 
MyAdapter(Context contextint resourceint textViewResourceId,
                        
String[] strings) {
                
super(contextresourcetextViewResourceIdstrings);
                
// TODO Auto-generated constructor stub
        
}
        
        @
Override
        
public View getView(int positionView convertViewViewGroup parent) {
                
LayoutInflater inflater = (LayoutInflatergetSystemService(Context.LAYOUT_INFLATER_SERVICE);
                
View row inflater.inflate(R.layout.list_itemparentfalse);
                
                
String stringName "string_key_" String.valueOf(position+1); 
                
int string_res_ID getResources().getIdentifier(stringName,"string",getPackageName());
                
String my_string getResources().getString(string_res_ID);
                
TextView tv = (TextViewrow.findViewById(R.id.textView1);
                
tv.setText(my_string);
                
                
String imageName "key_" String.valueOf(position+1); 
                
int image_res_ID getResources().getIdentifier(imageName,"drawable",getPackageName());
                
ImageView iv = (ImageViewrow.findViewById(R.id.imageView1);
                
iv.setImageResource(image_res_ID);

                return 
row;
        }
        
        


هر دو کدی که ذکر کردم، از کلید شماره 843 بودند. توصیه می کنم آن را بخوانید.

اگر مورد دیگری مد نظرتان بوده، آن را ذکر کنید.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط mpi

AlertDialog در لیست ویو (در برنامه نویسی اندروید)

#3
با تشکر از راهنمایی شما .
بله من منظورم استفاده از switch case بود و اشاره به هر یک از ایتم های لیست ویو
یه سوال دیگه بجای switch case من یه if گذاشتم ولی میخوام بجای مثالی که در زیر زدم بجای اینکه بره تو اکتیویتی آلرت دیالوگ رو نشون بده .


کد پی‌اچ‌پی:
@Override
    
protected void onListItemClick(ListView lView vint positionlong id) {
    
super.onListItemClick(lvpositionid);
     
    
Toast.makeText(this,
    
adapter.getItem(position) + "انتخاب شد",
    
Toast.LENGTH_SHORT).show();
     
    if (
adapter.getItem(position).equals("آموزش 1")) {
    
startActivity(new Intent(Search.thisShow1.class));
    } else if (
adapter.getItem(position).equals(" آموزش 2 ")) {
    
startActivity(new Intent(Search.thisShow2.class));
    
    } else if (
adapter.getItem(position).equals(" آموزش 3")) {
        
startActivity(new Intent(Search.thisShow3.class));

}


پاسخ

AlertDialog در لیست ویو (در برنامه نویسی اندروید)

#4
بهترین کد، تعیین حالت بر اساس position می باشد. یعنی دیگر کاری با عنوان ها نداریم. شما انتخاب های متناسب با item ها را در یک آرایه (Array) تعریف می کنید و در کد مربوط به اشاره بر روی item ، عنصر متناسب را بر اساس مقدار position از آرایه دریافت می کنید و کد بر اساس آن اجرا می گردد. بنابراین دیگر نیازی به کدنویسی بر اساس switch و case و if و ... نیست.
برای AlertDialog نیز به همین شکل، مثلا اگر قرار است که عنوان متناظر با item در AlertDialog نمایش داده شود، باید عنوان ها را در یک آرایه قرار داده و سپس بر اساس position ، عنوان متناظر با item اشاره شده را از آرایه دریافت کرده و سپس کدهای مربوط به AlertDialog برای نمایش عنوان، اجرا می شوند.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط mpi


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)