Java/Android:如何简化这个复杂的嵌套if-else和for循环代码块?
我有两段基本相同的代码,只是根据if语句的条件使用了几个不同的常量。我想问一下,这里是否有人知道如何简化代码,这样我就不会有太多的代码重复 代码如下:Java/Android:如何简化这个复杂的嵌套if-else和for循环代码块?,java,android,Java,Android,我有两段基本相同的代码,只是根据if语句的条件使用了几个不同的常量。我想问一下,这里是否有人知道如何简化代码,这样我就不会有太多的代码重复 代码如下: public static final int numLandscapeRows = 5; public static final int numPortraitRows = 8; public static final int numLandscapeImagesPerRow = 8; public static final int numPo
public static final int numLandscapeRows = 5;
public static final int numPortraitRows = 8;
public static final int numLandscapeImagesPerRow = 8;
public static final int numPortraitImagesPerRow = 5;
public static boolean imageViewLandscapeTracker[][] = new boolean[numLandscapeRows][numLandscapeImagesPerRow];
public static boolean imageViewPortraitTracker[][] = new boolean[numPortraitRows][numPortraitImagesPerRow];
if (screenWidth > screenHeight) {
TableRow tableRow[] = new TableRow[numLandscapeRows];
ImageView imageView[] = new ImageView[numLandscapeImagesPerRow];
for (i = 0; i < numLandscapeRows; i++) {
for (j = 0; j < numLandscapeImagesPerRow; j++) {
imageView[j].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if (imageViewLandscapeTracker[i-1][j-1] == false) {
imageViewLandscapeTracker[i-1][j-1] = true;
v.setBackgroundResource(R.drawable.launcher);
} else {
imageViewLandscapeTracker[i-1][j-1] = false;
v.setBackgroundResource(R.drawable.icon);
}
}
}
} else {
TableRow tableRow[] = new TableRow[numPortraitRows];
ImageView imageView[] = new ImageView[numPortraitImagesPerRow];
for (i = 0; i < numPortraitRows; i++) {
for (j = 0; j < numPortraitImagesPerRow; j++) {
imageView[j].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if (imageViewPortraitTracker[i-1][j-1] == false) {
imageViewPortraitTracker[i-1][j-1] = true;
v.setBackgroundResource(R.drawable.launcher);
} else {
imageViewPortraitTracker[i-1][j-1] = false;
v.setBackgroundResource(R.drawable.icon);
}
}
}
}
publicstaticfinal int numLandscapeRows=5;
公共静态最终int numPortraitRows=8;
公共静态最终int numLandscapeImagesPerRow=8;
公共静态最终整数mportraitimagesperrow=5;
公共静态布尔图像ViewLandscapeTracker[][]=新布尔值[numLandscapeRows][numLandscapeImagesPerRow];
公共静态布尔值ImageViewStartTracker[][]=新布尔值[numPortraitRows][numPortraitImagesPerRow];
如果(屏幕宽度>屏幕高度){
TableRow TableRow[]=新的TableRow[numLandscapeRows];
ImageView ImageView[]=新的ImageView[numlandscapeImagesError];
对于(i=0;i
我希望这很容易理解。我的Java非常基础,所以我不认为我可以编写非常复杂的代码。但是如果您有什么需要澄清的,请告诉我
谢谢您的时间。它们看起来几乎完全相同
int maxRows = screenWidth > screenHeight ? numLandscapeRows : numPortraitRows;
int maxCols = screenWidth > screenHeight ? numPortraitImagesPerRow : numPortraitImagesPerRow;
TableRow tableRow[] = new TableRow[numPortraitRows];
ImageView imageView[] = new ImageView[numPortraitImagesPerRow];
for (i = 0; i < maxRows ; i++) {
for (j = 0; j < maxCols ; j++) {
imageView[j].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if (imageViewPortraitTracker[i-1][j-1]) {
v.setBackgroundResource(R.drawable.icon);
} else {
v.setBackgroundResource(R.drawable.launcher);
}
imageViewPortraitTracker[i-1][j-1] = imageViewPortraitTracker[i-1][j-1]
}
});
}
}
int maxRows=screenWidth>screenHeight?numLandscapeRows:numPortraitRows;
int maxCols=screenWidth>screenHeight?numPortRaiTimages箭头:numPortRaiTimages箭头;
TableRow TableRow[]=新的TableRow[numPortraitRows];
ImageView ImageView[]=新ImageView[NUMPORTRATIMAGESPERROW];
对于(i=0;i
它们看起来几乎相同
int maxRows = screenWidth > screenHeight ? numLandscapeRows : numPortraitRows;
int maxCols = screenWidth > screenHeight ? numPortraitImagesPerRow : numPortraitImagesPerRow;
TableRow tableRow[] = new TableRow[numPortraitRows];
ImageView imageView[] = new ImageView[numPortraitImagesPerRow];
for (i = 0; i < maxRows ; i++) {
for (j = 0; j < maxCols ; j++) {
imageView[j].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if (imageViewPortraitTracker[i-1][j-1]) {
v.setBackgroundResource(R.drawable.icon);
} else {
v.setBackgroundResource(R.drawable.launcher);
}
imageViewPortraitTracker[i-1][j-1] = imageViewPortraitTracker[i-1][j-1]
}
});
}
}
int maxRows=screenWidth>screenHeight?numLandscapeRows:numPortraitRows;
int maxCols=screenWidth>screenHeight?numPortRaiTimages箭头:numPortRaiTimages箭头;
TableRow TableRow[]=新的TableRow[numPortraitRows];
ImageView ImageView[]=新ImageView[NUMPORTRATIMAGESPERROW];
对于(i=0;i
似乎您可以只制作一个简单的函数来完成这项工作(这种语法不是100%正确,但您应该明白这一点):
reducedFunction(整数行、整数图像、布尔[][]跟踪器){
对于(i=0;i屏幕高度){
简化函数(numLandscapeRows、numLandscapeImagesPerRow、imageViewLandscapeTracker)
}
否则{
简化函数(numPortraitRows、numPortraitImagesPerRow、IMAGEVIEWRATIONTRACKER)
}
似乎您可以只制作一个简单的函数来完成这项工作(这种语法不是100%正确,但您应该明白这一点):
reducedFunction(整数行、整数图像、布尔[][]跟踪器){
对于(i=0;i