无法将标题视图添加到列表中 - 已调用setAdapter

use*_*599 20 android listview adapter

我有一个edittext字段和一个"搜索"按钮.当我点击搜索时,我必须显示一个列表视图,其中包含与edittext中输入的值相对应的数据.我使用addHeader()在列表中添加了一个标题.当我第一次搜索时,我能够成功地在List中显示数据.但是当我再次搜索时,我收到以下错误.

FATAL EXCEPTION: main
java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
at android.widget.ListView.addHeaderView(ListView.java:261)
at android.widget.ListView.addHeaderView(ListView.java:284)
Run Code Online (Sandbox Code Playgroud)

在设置适配器之前,我已将标题分配给我的列表.

以下是我的代码:

myList = (ListView) findViewById(R.id.searchResultsList);
View header = View.inflate(this, R.layout.search_results_header, null);
myList.addHeaderView(header, null, false);

dataAdapter = new MyCustomAdapter(this, R.layout.results_list_item, searchedResults);
myList.setAdapter(dataAdapter);
Run Code Online (Sandbox Code Playgroud)

我在哪里做错了?

ish*_*no1 25

在android 2.3上,在setAdapter之后添加标题(即使你已经提前添加,然后删除)也会抛出异常.要动态隐藏或显示标题,请使用setVisibility().怎么样?您可以看到隐藏标题视图.


小智 12

无法将标题视图添加到列表中 - 已调用setAdapter.你可以看到,myList.addHeaderView(标题)必须在myList.setAdapter(adapter)之前执行;

  • 请注意,在4.4.4工作之前添加它.我在旧设备上测试了这个错误 (10认同)
  • 在将适配器设置为列表之前,我已将标头设置为我的列表. (2认同)

Har*_*ran 1

尝试这个..

dataAdapter = new MyCustomAdapter(this, R.layout.results_list_item, searchedResults);
myList.addHeaderView(header);
myList.setAdapter(dataAdapter);
dataAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)