我試圖合併這兩個循環在一起,以便我可以使用它的一個fillview。Android的Java使兩個相似的循環成一個循環
我一直試圖嘗試幾天,但我不確定如何做到這一點,所以將不勝感激一些幫助!
任何幫助表示讚賞
int maxDataSetSize = Math.max(data1.size(), Math.max(data2.size(), data3.size())) ;
for (int i = 0; i < maxDataSetSize; i++) {
String dataset1Value = data1.size() > i ? data1.get(i) : null;
String dataset2Value = data2.size() > i ? data2.get(i) : null;
String dataset3Value = data3.size() > i ? data3.get(i) : null;
View statsRowview = getLayoutInflater().inflate(R.layout.stats_row, null);
fillView(statsRowview, dataset1Value, dataset2Value, dataset3Value);
tableStats.addView(statsRowview);
}
int maxDataSetSize2 = Math.max(data4.size(), Math.max(data5.size(), data6.size()));
for (int i = 0; i < maxDataSetSize2; i++) {
String dataset4Value = data4.size() > i ? data4.get(i) : DEFAULT_COLOR;
String dataset5Value = data5.size() > i ? data5.get(i) : DEFAULT_COLOR;
String dataset6Value = data6.size() > i ? data6.get(i) : DEFAULT_COLOR;
View statsRowview = getLayoutInflater().inflate(R.layout.stats_row, null);
fillView2(statsRowview, dataset4Value, dataset5Value, dataset6Value);
tableStats.addView(statsRowview);
}
}
您的循環讀取不同的數據,調用不同的填充方法,並將遍歷其代碼的次數不同。爲什麼你要嘗試合併它們? – azurefrog 2015-02-17 22:36:54
至於發生了什麼是這個http://puu.sh/fMfrt/03a298d2ee.png,但我想如果我合併它,它會像這樣:http://puu.sh/fMfxx/bb5389687f.png – user3411002 2015-02-17 22:38:30
我可以理解統一控制代碼的感覺很自然。但是大多數情況下,java中沒有好的方法可以做到這一點。它沒有需要的宏或類似的構造(所以你只能使用像visitor,iterator或streams())這樣的模式。在具體的例子中,我認爲在循環結構中有合理的少量控制代碼。 – eckes 2015-02-18 01:12:40