Android 新适配器未更新到listview
我正试图从主列表中获取所选项目,并将其更新到其他子列表,但当我单击主列表项目时,列表中的所有项目都将不可见,除了我选择的项目外,只有该元素正在更新到子列表,可能出了什么问题?。。。下面的代码片段显示了我正在做什么Android 新适配器未更新到listview,android,Android,我正试图从主列表中获取所选项目,并将其更新到其他子列表,但当我单击主列表项目时,列表中的所有项目都将不可见,除了我选择的项目外,只有该元素正在更新到子列表,可能出了什么问题?。。。下面的代码片段显示了我正在做什么 ListView list,selectedList; LazyAdapter adapter, adapter1; String mStrings[]={"item1","item2","item3","item4","item5","item6","item7"}; @Overr
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();
}
}});
}
ListView列表,selectedList;
懒散的适配器,适配器1;
字符串mStrings[]={“item1”、“item2”、“item3”、“item4”、“item5”、“item6”、“item7”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list=(ListView)findViewById(R.id.list);
适配器=新的LazyAdapter(此,mStrings);
list.setAdapter(适配器);
list.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
按钮b=(按钮)findViewById(R.id.button1);
b、 setOnClickListener(listener);
list.setOnItemClickListener(新的OnItemClickListener(){
ArrayList年份=新ArrayList();
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
SparseBooleanArray checked=list.getCheckedItemPositions();
如果(选中。获取(arg2))
{
年份。添加(mStrings[arg2]);
}
其他的
{
年。移除(mStrings[arg2]);
}
如果(年份.大小()!=0)
{
String selectedItems[]=新字符串[years.size()];
对于(inti=0;i),最好使用相同的适配器实例并更改其内容,然后通知数据更改(就像您所做的那样)
回收您的适配器,而不是创建新的适配器。最好使用相同的适配器实例并更改其内容,然后通知数据更改(就像您所做的那样)
回收您的适配器,而不是创建一个新适配器。是的,但我需要添加新的数组,其中包含选定的项,因此采用新实例…但即使我也使用相同的适配器,也会出现问题..是的,但我需要添加新数组,其中包含选定的项,因此采用新实例…但问题甚至会发生如果我也使用相同的适配器。。