我正在尝试从主列表中获取选定的项目,并将它们更新到其他子列表,但是当我单击主列表项目时,列表的所有项目都将变得不可见,除了我选择的那个,只有那个元素是更新到子列表,可能是什么问题?...下面的代码 fragment 显示了我在做什么...
ListView list,selectedList;
LazyAdapter adapter, adapter1;
String mStrings[]={"item1","item2","item3","item4","item5","item6","item7"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(this, mStrings);
list.setAdapter(adapter);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(listener);
list.setOnItemClickListener(new OnItemClickListener(){
ArrayList<String> years = new ArrayList<String>();
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
SparseBooleanArray checked = list.getCheckedItemPositions();
if(checked.get(arg2))
{
years.add(mStrings[arg2]);
}
else
{
years.remove(mStrings[arg2]);
}
if(years.size()!=0)
{
String selectedItems[]=new String[years.size()];
for(int i=0;i<years.size();i++)
selectedItems[i]=years.get(i);
selectedList=(ListView)findViewById(R.id.selectedList);
adapter1=new LazyAdapter(MainActivity.this, selectedItems);
selectedList.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
}
}});
}
最佳答案
最好使用相同的适配器实例并更改其内容,然后通知数据更改(就像您所做的那样)。
回收你的适配器而不是创建一个新的。
关于android - 新适配器未更新到 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8653652/