2014-06-17 4 views
0

나는 사용자가 무언가를 선택할 수있는 스피너가 있습니다. 그들이 할 때 switchCat()을 호출하고 chooseView()을 호출하고 int을 기반으로 뭔가 다른 작업을 수행합니다. 이 경우 다른 배열 문자열 집합을로드합니다.Android 간단한 방법이 작동하지 않습니까?

그러나 실행할 때마다 R.array.array0의 문자열 만 표시되므로 if의 첫 번째 문자는 chooseView()입니다. csArray은 다른 곳에 설정되어 있지 않습니다. 나는 chooseView()을 생성 중입니다.

저는 초보자입니다. 고맙습니다!

스피너 항목

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

switchCat 선택(); 당신이 당신의 ArrayList에 항목을 추가하는 것처럼

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

것 같습니다. 추가하기 전에 오래된 것을 제거하지 않으실 것이라고 확신합니까? 그렇지 않으면 chooseView()이 호출 될 때 목록에 남아있게됩니다. chooseView()에서 if 문 앞에 mArrayList.clear()으로 전화하면됩니다. 물론 이것은 ListViewmArrayList에 종속되어 있다고 가정합니다.

0

처음 실행할 때마다 arraylist가 이전 출력 값을 추가 할 때마다 정확한 출력을 얻을 수 있으므로 arraylist를 지우고 올바른 출력을 얻으려고 할 때마다 올바른 출력이 제공됩니다.

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