2014-06-17 40 views
0

我有一個微調,用戶可以選擇一些東西。當他們這樣做時,它調用switchCat()然後調用chooseView()並根據int通過將做不同的事情。在這種情況下,它會加載一組不同的數組字符串。Android簡單的方法不工作?

但是,每當我運行它時,我將只看到來自R.array.array0的字符串,所以第一個ifchooseView()csArray不在別的地方。我打電話給chooseView() onCreate。

我是新手。謝謝!

微調項選擇

@Override 
public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
    if (synthetic) { 
     synthetic = false; 
     return true; 
    } 
    switchCat(itemPosition); 
    return true; 
} 

switchCat();

public void switchCat(int i) { 
    if(i == 0) { 
    chooseView(0); 
    } 
    else if(i == 1) { 
    chooseView(1); 
    } 
} 

chooseView()

public void chooseView(int i) { 
    if(i == 0) { 
     CharSequence[] csArray = getResources().getTextArray(R.array.array0); 

     for (CharSequence s : csArray) { 
      mArrayList.add(s); 

     } 
    } 
    if(i == 1) { 
     CharSequence[] csArray = getResources().getTextArray(R.array.array1); 

     for (CharSequence s : csArray) { 
      mArrayList.add(s); 

     } 
    } 
} 

回答

3

它看起來像你將項目添加到您的ArrayList。你確定你不打算在添加之前擺脫舊的?如果你不這樣做,當調用chooseView()時,它們將保留在列表中。在chooseView()之前,只需在您的if報表前撥打mArrayList.clear()即可。當然,這假設您的ListView依賴於mArrayList

0

每當你第一次運行它會給出正確的輸出,另一次你arraylist會添加與前一個值,所以每次你想要清除arraylist得到正確的輸出。

public void switchCat(int i) { 
    myArrayList.clear(); 
    if(i == 0) { 
    chooseView(0); 
    } 
    else if(i == 1) { 
    chooseView(1); 
    } 
}