【发布时间】:2013-12-31 00:04:29
【问题描述】:
我的 ActionBar 中有一个 EditText。问题是,当我输入文本时,它会正确搜索我的 ListView 并更新 ArrayList,但它似乎认为我的 ListView 仍然与以前一样大小。因此,当我向下滚动 ListView 时,它会在新 ArrayList 中的最后一项之后崩溃。
这里是onTextChanged 函数:
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (charSequence.length() > 0) {
adapter.updateData(songList, charSequence);
runOnUiThread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
adapter.notifyDataSetChanged();
getListView().refreshDrawableState();
getListView().invalidateViews();
}
}); //...
} }
这是我自定义的updateData 函数:
public void updateData(ArrayList<Song> originalList, CharSequence searchText) {
itemsArrayList = new ArrayList<Song>();
String search = searchText.toString();
for (Song song : originalList) {
if (search.equalsIgnoreCase((String) song.getName().subSequence(0, searchText.length()))
|| search.equalsIgnoreCase((String) song.getArtist().subSequence(0, searchText.length()))
|| song.getLyrics().contains(search)) {
this.itemsArrayList.add(song);
}
}
}
更新:LogCat 中的错误是“invalid index”
java.lang.IndexOutOfBoundsException: Invalid index 45, size is 45
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
【问题讨论】:
-
您是否覆盖了
getCount()以便适配器知道新的计数?
标签: java android listview arraylist