因此,如果在其他公共void外部或内部调用.add,在ArrayAdapter-ArrayList上添加新项时会遇到问题。我使用的是xml文件内部的列表视图,并将其替换为ArrayList Adapter
这是我在onCreate之外的代码,就在AppCompatActivity下面:
List<String> recolis = new ArrayList<>();
String [] startinglist = {};
这是我在onCreate里面的代码:
ArrayList<String> recolis = new ArrayList<String>(Arrays.asList(startinglist));
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, recolis);
recolist.setAdapter(adapter);
所以我的问题是,每当我在onCreate之外或在另一个public void中调用一个新的recolis.add("new");
时,假设我有一个switch case,它将调用一个新的public void“inmomacy();“Call new public void where it has the .add function
而里面的“失眠”();“我想向ArrayList添加一个新项,但问题是它甚至不会添加。This is a new public void
我试图找到任何相关的问题,但都不起作用。我只想在数组列表中添加一个新项到它的区域之外。
我真的真的很感谢你的帮助。谢谢!
1条答案
按热度按时间2w2cym1i1#
在你的OnCreate函数中,你正在重新初始化你的reclis。另外,你是想输入recolist.setAdapter(adapter);?从你提供的代码看,这似乎就是你的意思,不管怎样,你应该做
ArrayList<String> recolis = new ArrayList<String>(Arrays.asList(startinglist));
,而不是recolis = new ArrayList<String>(Arrays.asList(startinglist));
,这是因为当你做数组列表的recolis时,Java会把它当作“哦,好吧,这是一个新变量,任何有这个名字的东西都只是巧合”,这意味着,当你去实际更新recolis时,它不会用适配器更新你的recolis,而是你在AppCompatActivity下面提供的,这意味着当它“添加”到列表中时,它实际上并没有去任何地方。