我有一个微调器,用户可以在其中进行选择。当他们这样做时,它会调用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
。