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的实际底层适配器