Android 可以更改列表视图吗';什么是动态适配器?

Android 可以更改列表视图吗';什么是动态适配器?,android,listview,android-arrayadapter,listadapter,Android,Listview,Android Arrayadapter,Listadapter,我不想创建多个活动,而是想根据需要更改列表视图的ArrayAdapter。我没有看到任何关于多次调用setAdapter()是否可以的内容 更具体地说,假设我想启动一个具有列表视图的活动。在本例中,ListView由ListView.setAdapter(this)初始化,例如从CategoryArrayAdapter初始化 然后用户选择一个类别。在不启动新活动的情况下,代码将为同一列表视图设置新适配器。新适配器,比如ItemArrayAdapter调用listView.setAdapter(t

我不想创建多个活动,而是想根据需要更改
列表视图的
ArrayAdapter
。我没有看到任何关于多次调用
setAdapter()
是否可以的内容

更具体地说,假设我想启动一个具有
列表视图的活动。在本例中,
ListView
ListView.setAdapter(this)
初始化,例如从
CategoryArrayAdapter
初始化

然后用户选择一个类别。在不启动新活动的情况下,代码将为同一
列表视图设置新适配器。新适配器,比如
ItemArrayAdapter
调用
listView.setAdapter(this)


是否有人有成功执行此操作的经验,或者知道不应执行此操作的具体原因?

重置适配器是可以的,但请注意,执行此操作时可能会出现GUI故障,因为要更改其适配器的视图必须使用新数据重新绘制。除此之外,你应该没事

API中没有提到多次调用setAdapter()是否可以

简单的回答是肯定的,我以前也做过类似的事情

这正是API中存在并提供的原因。每个列表项的实际内容(模型)及其呈现方式(视图)是在android.widget.Adapter内部隔离和实现的,而不是直接绑定到android.widget.AdapterView。只要正确实现了适配器,就可以通过调用setAdapter()方法交换/更改绑定到ListView的实际底层适配器