کلیدستان

نسخه‌ی کامل: مخفی کردن یک عکس در یکی از ردیفهای یک لیست ویو با کلیک بر روی یک دکمه داخل همان ردیف
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.
من یک لیست ویو دارم که چند تا ردیف داره و داخل هر ردیف هم یک عکس داره و یک دکمه.
می خوام با کلیک روی هر دکمه عکس همون ردیف مخفی بشه.
یک OnClickListener تعریف کردم ولی نمی دونم چطوری باید عکس همون ردیف رو مخفی کنم.
هر طور می نویسم عکس ردیف آخر مخفی می شه.
ممکنه راهنمایی کنید چطوری باید برای عکس هر ردیف کد نوشت؟
ممنون
سلام.
شما باید در Adapter ای که برای ListView تعیین کرده اید، کدهایتان را برای عناصر ردیف بنویسید (یک کد می نویسید اما برای تمامی ردیف های ListView به کار می رود). مثلا در هر ردیف، یک دکمه و یک عکس دارید. هر دو را شناسایی می کنید و تعیین می کنید که اگر روی دکمه اشاره شد، عکس حذف شود.
این مورد را در کلید زیر می توانید بررسی کنید :

کلید شماره 843

مثلا در آن مبحث، کدهای Adapter به صورت زیر می باشد :

کد پی‌اچ‌پی:
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;
                }
                
                
        } 

مشاهده می کنید که در آن، یک ImageView و یک TextView را شناسایی کرده ایم و بعد، مقادیر مورد نظرمان را در آنها نمایش داده ایم، اما شما بعد از شناسایی عناصر، کد مورد نظرتان برای عملکرد دکمه (Button) را می نویسید ( ImageView و Button موجود در فایل xml متناظر با لایه گرافیکی ردیف را شناسایی کرده و عملکرد دکمه را تعریف می کنید).

سلام مجدد
مشکل من هم همین جاست! شناسایی عناصر
به نظر میرسه شما مقدار ImageView و TextView رو شناسایی کردین یعنی image_res_ID و my_string رو و نه خود هر عنصر رو!
میشه بیشتر توضیح بدین.
اگر هم یه نمونه کد لیسنر رو برام بزارید بی نهایت سپاس گذار میشم

 
نه کاری با آن بخش از کدها نداشته باشید. ابتدا ببینید که row چگونه به دست آمده :

کد پی‌اچ‌پی:
LayoutInflater inflater = (LayoutInflatergetSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row inflater.inflate(R.layout.list_itemparentfalse); 

سپس بر اساس آن، ImageView را با کد زیر شناسایی کرده ایم :

کد پی‌اچ‌پی:
ImageView iv = (ImageViewrow.findViewById(R.id.imageView1); 

مشاهده می کنید که قبل از روش findViewById ، کلمه row را نوشته ایم. عنصر دیگر مورد نظرتان را هم با این روش شناسایی می کنید و بعد کدهای مورد نظرتان را برای آنها می نویسید.

سلام
با تشکر از راهنمایی مدیر محترم .
من موفق به تکمیل کد شدمگ
برای دوستان هم کد رو میزارم اگه کسی می خواد استفاده کنه
اما راه حل من:
یک custom onclicklistener تعریف کردم و به کلیک دکمه نسبت دادم
اینم کد کلاس لیسنر:
کد پی‌اچ‌پی:
public class MyLovelyOnClickListener implements OnClickListener
           
{

             ImageView myLovelyVariable;
             ProgressBar myLovelyprogres;
             public MyLovelyOnClickListener(ImageView myLovelyVariable,ProgressBar myLovelyprogres) {
                  this.myLovelyVariable myLovelyVariable;
                  this.myLovelyprogres myLovelyprogres;
             }

             @Override
             
public void onClick(View v)
             {
                 //read your lovely variable
                 Toast.makeText(getApplicationContext(), String.valueOf(myLovelyVariable), Toast.LENGTH_LONG).show();
                 myLovelyVariable.setAlpha((float) 0.1);
                 myLovelyprogres.setVisibility(1);
             }

           }; 
 اینم کد دکمه:
کد پی‌اچ‌پی:
bt.setOnClickListener(new MyLovelyOnClickListener(iv,pb));