簡単な配列の作り方
やりたいことがあるのですが、原始的なやり方しか思いつきません。
簡単な方法があればご教授願いたく思い質問いたしました。
よろしくお願いします!
<やりたいこと>
明細行が5件ありまして、それぞれの行に有効かどうかフラグがある。
5件のうち有効になっている数だけの配列を作成する。
---------------------------------------------
例1)1,2,3,4,5のうち2,3,5の3行が有効の場合
String[] str = String[]{2,3,5}
例2)1,2,3,4,5のうち4の1行が有効の場合
String[] str = String[]{4}
---------------------------------------------
<現在やっていること>
// 有効行の判断用
private boolean yukoFlg1 = false;
private boolean yukoFlg2 = false;
private boolean yukoFlg3 = false;
private boolean yukoFlg4 = false;
private boolean yukoFlg5 = false;
// 有効行の数
private long yukoCnt = 0;
/**
* 該当行分の配列にする String[]
* @param str 配列にしたい値
*/
public String[] setStrArray (
String str1,
String str2,
String str3,
String str4,
String str5)
throws Exception
{
String[] result = null;
// 有効行の数が1の場合
if (yukoCnt == 1) {
if (yukoFlg1) {
result = new String[]{str1};
} else if (yukoFlg2) {
result = new String[]{str2};
} else if (yukoFlg3) {
result = new String[]{str3};
} else if (yukoFlg4) {
result = new String[]{str4};
} else {
result = new String[]{str5};
}
// 有効行の数が2の場合
} else if (yukoCnt == 2) {
if (yukoFlg1) {
if (yukoFlg2) {
result = new String[]{str1, str2};
} else if (yukoFlg3) {
result = new String[]{str1, str3};
} else if (yukoFlg4) {
result = new String[]{str1, str4};
} else {
result = new String[]{str1, str5};
}
} else if(yukoFlg2) {
if (yukoFlg3) {
result = new String[]{str2, str3};
} else if (yukoFlg4) {
result = new String[]{str2, str4};
} else {
result = new String[]{str2, str5};
}
} else if (yukoFlg3) {
if (yukoFlg4) {
result = new String[]{str3, str4};
} else {
result = new String[]{str3, str5};
}
} else {
result = new String[]{str4, str5};
}
// 有効行の数が3の場合
} else if (yukoCnt == 3){
if (yukoFlg1) {
if (yukoFlg2) {
if (yukoFlg3) {
result = new String[]{str1, str2, str3};
} else if (yukoFlg4) {
result = new String[]{str1, str2, str4};
} else {
result = new String[]{str1, str2, str5};
}
} else if (yukoFlg3) {
if (yukoFlg4) {
result = new String[]{str1, str3, str4};
} else {
result = new String[]{str1, str3, str5};
}
} else {
result = new String[]{str1, str4, str5};
}
} else if (yukoFlg2) {
if (yukoFlg3) {
if (yukoFlg4) {
result = new String[]{str2, str3, str4};
} else {
result = new String[]{str2, str3, str5};
}
}
} else {
result = new String[]{str3, str4, str5};
}
// 有効行の数が4の場合
} else if (yukoCnt == 4) {
if (!yukoFlg1) {
result = new String[]{str2, str3, str4, str5};
} else if (!yukoFlg2) {
result = new String[]{str1, str3, str4, str5};
} else if (!yukoFlg3) {
result = new String[]{str1, str2, str4, str5};
} else if (!yukoFlg4) {
result = new String[]{str1, str2, str3, str5};
} else {
result = new String[]{str1, str2, str3, str4};
}
// 有効行の数が5の場合
} else {
result = new String[]{str1, str2, str3, str4, str5};
}
return result;
}
お礼
good-failure様 いつもご回答ありがとうございます。 根本的に間違った考え方をしていたことに気付きました。 例えばですが、アクセスして表示したら、その内容をどこかに保管しておき、次に起動したときにはそのキャッシュされている内容をとりあえず表示する。同時に再アクセスし、新しいデータがダウンロード完了した段階で、キャッシュされたデータと比較し、新たな項目だけを追加して表示を更新する。多くのダウンロード型のデータ表示アプリは、だいたいそんな感じでアプローチしていると思います。 上記の方法で試してみたいと思います。 ありがとうございました!