我有一个RecyclerView
,根据我在Spinner
中选择的选项,它显示不同的列表。我可以动态地将项目添加到列表中,但是当我将项目添加到Spinner
的顶部选项时,每次添加时都会出现两个项目,仅应添加一个项目,并且在其中选择其他选项时Spinner
,然后回到顶部选项,应该包含在其中的所有项目都消失了。但是,当我在另一个选项中重复相同的操作时,一次添加一个项目,并且如果我切换到另一个项目又返回时它们仍然存在,因此只有在遇到这些问题的第一个选项中,它才存在。
以下是显示所发生情况的图片。第一张图片显示了整个Spinner
,第二张是选择了顶部选项并添加了项目的图片,第三张是选择了第二个Spinner
选项,第四张是返回了顶部的选项,现在所有项目都消失了。
此方法用于将项目添加到列表之一。 Spinner
中的每个选项用于获取listOfLists
中的元素,其中每个元素都是ArrayList<Item>()
。 mItemList
是RecyclerView
打印出来的列表。
public void addItem(){
mItemList.add(0, new Item(idText.getText().toString(), addAmountField.getText().toString()));
listOfLists.get(dropdown.getSelectedItemPosition()).add(0, new Item(idText.getText().toString(), addAmountField.getText().toString()));
System.out.println("ListSize: " + listOfLists.get(dropdown.getSelectedItemPosition()).size());
addAmountField.setVisibility(View.GONE);
btnAdd.setVisibility(View.GONE);
mAdapter.notifyDataSetChanged();
saveData2();
}
当我从Spinner
中选择另一个选项时,这是用于切换列表的代码。我在这里所做的是先清除mItemList
,然后在ArrayList<Item>
内部填充listOfLists
之一。
dropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
mItemList.clear();
for (int i = 0; i < listOfLists.get(position).size(); i++) {
mItemList.add(listOfLists.get(position).get(i));
}
mAdapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// your code here
}
});
如何解决此问题,以使Spinner
的顶部选项与其他选项一样工作,即它一次添加一个项目,而在我切换到另一个选项后仍然具有这些项目?
答案 0 :(得分:0)
我设法解决了这个问题,所以对于任何面临类似问题的人来说,这就是问题所在:
与listOfLists中的其他列表不同,我将mItemList设置为这样的选定列表
mItemList.clear();
for (int i = 0; i < listOfLists.get(position).size(); i++) {
mItemList.add(listOfLists.get(position).get(i));
}
当我像这样运行应用程序时,mItemList始终设置为第一个列表
mItemList = listOfLists.get(dropDown.getSelectedItemPosition());
所以我刚刚对其进行了更改,因此它以与其他列表相同的方式设置了mItemList,现在它可以正常工作了。