بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
ساخت گالری عکس ساده با GrideView (ضروری)
مدیریت گفتگو
آخرین تغییر: 10 سال پیش
دوستان کسی منبعی ، کدی ، فیلمی ، سراغ نداره که یه گالری عکس ساده رو با استفاده از گرید ویو با استفاده از عکس های داخل پوشهasset
پاسخها 3
لینکی که آقای محسن علیزاده معرفی کردند بسیار خوب بود. من یه مشکلی دارم : من برای نمایش در هر ایتم gridView کلا سه نوع تصویر با سه رنگ مختلف دارم. می خوام برای هر کدوم hover مختص خودشو بزارم. یعنی تصویر زیرش عوض شه . کدی که برای تابع getData نوشتم بصورت زیره ولی عمل نمیکنه.
private ArrayList<ImageItem> getData() {
final ArrayList<ImageItem> imageItems = new ArrayList<>();
String GrayUri = "@drawable/img_grid_gray_item";
String GrayUriDarker = "@drawable/img_grid_gray_darker_item";
String RedUri = "@drawable/img_grid_red_item";
String RedUriDarker = "@drawable/img_grid_red_darker_item";
String GreenUri = "@drawable/img_grid_green_item";
String GreenUriDarker = "@drawable/img_grid_green_darker_item";
int imageResourceGray = getResources().getIdentifier(GrayUri, null, getPackageName());
int imageResourceGrayDarker = getResources().getIdentifier(GrayUriDarker, null, getPackageName());
int imageResourceRed = getResources().getIdentifier(RedUri, null, getPackageName());
int imageResourceRedDarker = getResources().getIdentifier(RedUriDarker, null, getPackageName());
int imageResourceGreen = getResources().getIdentifier(GreenUri, null, getPackageName());
int imageResourceGreenDarker = getResources().getIdentifier(GreenUriDarker, null, getPackageName());
StateListDrawable statesRed = new StateListDrawable();
statesRed.addState(new int[] {android.R.attr.state_pressed},
getResources().getDrawable(imageResourceRedDarker));
statesRed.addState(new int[]{},
getResources().getDrawable(imageResourceRed));
StateListDrawable statesGray = new StateListDrawable();
statesGray.addState(new int[] {android.R.attr.state_pressed},
getResources().getDrawable(imageResourceGray));
statesGray.addState(new int[]{},
getResources().getDrawable(imageResourceGrayDarker));
StateListDrawable statesGreen = new StateListDrawable();
statesGreen.addState(new int[] {android.R.attr.state_pressed},
getResources().getDrawable(imageResourceGreen));
statesGreen.addState(new int[]{},
getResources().getDrawable(imageResourceGreenDarker));
for (int i = 0; i < livePuzzleInfos.size(); i++) {
if(livePuzzleInfos.get(i).score == -1) {
imageItems.add(new ImageItem(statesGray, livePuzzleInfos.get(i).id));
}
if(livePuzzleInfos.get(i).score> 0) {
imageItems.add(new ImageItem(statesGreen, livePuzzleInfos.get(i).id));
}
if(livePuzzleInfos.get(i).score == 0) {
imageItems.add(new ImageItem(statesRed, livePuzzleInfos.get(i).id));
}
}
return imageItems;
}
نظرات
کد تمیز ترش اینه : (کار کرد ولی یکی رو که تاچ کنی یکی دیگه رنگش عوض میشه) :
private ArrayList<ImageItem> getData() {
final ArrayList<ImageItem> imageItems = new ArrayList<>();
String GrayUri = "@drawable/img_grid_gray_item";
String GrayUriDarker = "@drawable/img_grid_gray_darker_item";
String RedUri = "@drawable/img_grid_red_item";
String RedUriDarker = "@drawable/img_grid_red_darker_item";
String GreenUri = "@drawable/img_grid_green_item";
String GreenUriDarker = "@drawable/img_grid_green_darker_item";
int imageResourceGray = getResources().getIdentifier(GrayUri, null, getPackageName());
int imageResourceGrayDarker = getResources().getIdentifier(GrayUriDarker, null, getPackageName());
int imageResourceRed = getResources().getIdentifier(RedUri, null, getPackageName());
int imageResourceRedDarker = getResources().getIdentifier(RedUriDarker, null, getPackageName());
int imageResourceGreen = getResources().getIdentifier(GreenUri, null, getPackageName());
int imageResourceGreenDarker = getResources().getIdentifier(GreenUriDarker, null, getPackageName());
StateListDrawable statesRed = new StateListDrawable();
statesRed.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(imageResourceGray));
statesRed.addState(new int[] {android.R.attr.state_focused},getResources().getDrawable(imageResourceGray));
statesRed.addState(new int[]{},getResources().getDrawable(imageResourceRed));
StateListDrawable statesGray = new StateListDrawable();
statesGray.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(imageResourceGreen));
statesGray.addState(new int[] {android.R.attr.state_focused},getResources().getDrawable(imageResourceGreen));
statesGray.addState(new int[]{},getResources().getDrawable(imageResourceGray));
StateListDrawable statesGreen = new StateListDrawable();
statesGreen.addState(new int[] {android.R.attr.state_pressed}, getResources().getDrawable(imageResourceGray));
statesGreen.addState(new int[] {android.R.attr.state_focused}, getResources().getDrawable(imageResourceGray));
statesGreen.addState(new int[]{}, getResources().getDrawable(imageResourceGreen));
for (int i = 0; i < livePuzzleInfos.size(); i++) {
if(livePuzzleInfos.get(i).score == -1) {
imageItems.add(new ImageItem(statesGray, livePuzzleInfos.get(i).id));
}
if(livePuzzleInfos.get(i).score> 0) {
imageItems.add(new ImageItem(statesGreen, livePuzzleInfos.get(i).id));
}
if(livePuzzleInfos.get(i).score == 0) {
imageItems.add(new ImageItem(statesRed, livePuzzleInfos.get(i).id));
}
}
return imageItems;
}
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات