在android中将搜索结果更新为惰性适配器

在android中将搜索结果更新为惰性适配器,android,listview,arraylist,Android,Listview,Arraylist,我有一个项目列表,并希望实现它的搜索功能。因此,我有一个带有addTextChangedListener的文本框 搜索结果很好,但当我尝试将结果设置为ListView时,新结果会附加到旧结果中 我正在使用一个懒惰的适配器。如何从适配器中清除旧结果 代码如下: ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); ArrayLi

我有一个项目列表,并希望实现它的搜索功能。因此,我有一个带有addTextChangedListener的文本框

搜索结果很好,但当我尝试将结果设置为ListView时,新结果会附加到旧结果中

我正在使用一个懒惰的适配器。如何从适配器中清除旧结果

代码如下:

ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
ArrayList<HashMap<String, String>> searchResults = new ArrayList<HashMap<String, String>>();
 searchText = (EditText) findViewById(R.id.searchText);

 //Count from the server 
 int count = dataCount();

for (int i = 0; i < dataCount; i++) 
{
    HashMap<String, String> map = new HashMap<String, String>();

    // adding data to HashMap key => value
    map.put(KEY_ID, trackNumber);
    map.put(KEY_TITLE, trackTitle);
    map.put(KEY_ARTIST, trackArtist);
    map.put(KEY_DURATION, trackDuration);
    map.put(KEY_THUMB_URL, trackAlbumArt);

    // adding HashList to ArrayList
    songsList.add(map);

}

adapter=new LazyAdapter(this, songsList);        
list.setAdapter(adapter);
要获得结果:

  Map getSong(CharSequence s) 
  {

    for (HashMap<String, String> map : songsList)
    {
        if(map.get(KEY_TITLE).contains(s))
        {
            Log.e("Map","Son"+map);

            HashMap<String, String> map2 = new HashMap<String, String>();
            // adding each child node to HashMap key => value
            map2.put(KEY_ID, map.get(KEY_ID));
            map2.put(KEY_TITLE, map.get(KEY_TITLE));
            map2.put(KEY_ARTIST, map.get(KEY_ARTIST));
            map2.put(KEY_DURATION, map.get(KEY_DURATION));
            map2.put(KEY_THUMB_URL, map.get(KEY_THUMB_URL));

            searchResults.add(map2);            
        }
    }

    adapter=new LazyAdapter(this, searchResults);
    list.setAdapter(adapter);
    adapter.notifyDataSetChanged();

    return Collections.emptyMap();
    }
Map getSong(字符序列)
{
for(HashMap映射:songsList)
{
if(map.get(KEY_TITLE.contains))
{
Log.e(“地图”、“子”+地图);
HashMap map2=新的HashMap();
//将每个子节点添加到HashMap key=>value
map2.put(KEY_ID,map.get(KEY_ID));
map2.put(KEY_TITLE,map.get(KEY_TITLE));
map2.put(KEY_-ARTIST,map.get(KEY_-ARTIST));
map2.put(键持续时间,map.get(键持续时间));
map2.put(KEY_THUMB_URL,map.get(KEY_THUMB_URL));
searchResults.add(map2);
}
}
adapter=新的LazyAdapter(此,搜索结果);
list.setAdapter(适配器);
adapter.notifyDataSetChanged();
return Collections.emptyMap();
}
谢谢

开始之前,您没有“清理”旧的搜索结果

添加以下行:

searchResults = new ArrayList<HashMap<String, String>>();
searchResults=newarraylist();

在方法的开头
getSong()
(for循环之前)

songsList2
应该是
searchResults
?谢谢,但是没有匹配,搜索很好,但是当单击元素时,它会在其他位置打开item@Prasad您有一个不同的问题-发布一个包含所有相关信息的新问题
searchResults = new ArrayList<HashMap<String, String>>();