我有一个微调器,用户可以在其中进行选择。当他们这样做时,它会调用switchCat(),然后调用chooseView(),并且基于传递的int会做一些不同的事情。在这种情况下,它将加载一组不同的数组字符串。

但是,无论何时运行它,我都只会看到R.array.array0中的字符串,因此if中的第一个chooseView()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);
    }
}


choiceView()

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);

        }
    }
}

最佳答案

您似乎正在向ArrayList添加项目。您确定在添加之前也不想摆脱旧的吗?如果不这样做,则在调用chooseView()时它们将保留在列表中。在chooseView()中,只需在mArrayList.clear()语句之前调用if。当然,这假定您的ListView依赖于mArrayList

08-18 03:23