تغییر سورس تصویر imageView به صورت دینامیک
من میخوام عکسی که برای imageView انتخاب شده رو براساس نام تصاویری که در drawable به ترتیب و فرمت خاصی نامگذاری و ذخیره شده اند رو تغییر بدم مثلا imageOne , imageTwo و الی آخر ، ولی مشکل اینجاست که نمیدونم چه جوری باید از دو تا دستور زیر استفاده کنم
myImageView.setImageResource(R.Drawable.targetImage); or myImageView.setImageDrawable(getRecources().getDrawable(R.Drawable.targetImage));
بخوام واضح تر منظورم رو بیان کنم میتونم اینجوری بگم که چه طور میشه فرضاً با هر بار فراخوانی متدی که در اون از یکی از دو دستور بالا استفاده شده قسمت targetImage در کدهای بالا رو به صورت داینامیک به نام تصویر مورد نظر تغییر داد.از متغیر که فکر نمیکنم بشه استفاده کرد به جاش!! میشه؟
یه مقدار سرچ کردم این راه حل رو پیدا کردم که جواب این بوده که میشه از Reflection استفاده کرد ولی من هیچ آشنایی با این مبحث از جاوا ندارم و نمیدونم چه طوری باید به این مورد تعمیم داده بشه.
اگه ایده یا راه حل بهتری در نظر دارید لطفاً منو راهنمایی کنید.
خب بچه ها واقعاً غافلگیر شدم از این همه پیشنهاد ، کد ، راهنمایی ، نظر، لینک !! :) به احتمال زیاد تا حالا یه بار براتون پیش اومده بود که نیاز به یه همچین موردی داشته باشید! نداشتید؟
خدارو شکر و خوشبختانه راه حل رو پیدا کردم اینجا هم میذارم مطمئنم حتماً یه روزی به کارتون میاد.البته به جای imageone از این فرمت نامگذاری استفاده کردم: image1 البته فرقی نداره میشد فقط از نام های خشک و خالی بدون پسوند عددی ولی متفاوت از هم استفاده کرد ولی حالا من این روش نامگذاری رو ترجیح دادم کد زیر رو ببینید.
private void setImage(ImageView imageView,String someName) {
String prefix = someName;
int suffix = counter++;
Resources resource = getResources();
int imgId = resource.getIdentifier(prefix + suffix, "drawable","your.package.name");
imageView.setImageResource(imgId);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .