读书人

在android搜索到匹配的信息如何刷新

发布时间: 2012-08-03 00:12:14 作者: rapoo

在android搜索到匹配的信息,怎么刷新显示在listivew上
最近在做android的文件管理器,搜索获取到了相关的listivew和imageview信息,怎么样显示在listview中,刷新listview。我的代码是这样的,怎么搜索出来在listivew上什么也没有显示

Java code
public void showCurrentAllFile(File cur) throws Exception{         File[] searchFile= new File(cur.toString()).listFiles();         filesNameList2 = new ArrayList<FileItem>();        fileItem2 = new FileItem();        for(int i=0; i<searchFile.length; i++){                    inputFileName = etSearchFilePath.getText().toString();      //获取要搜索的文件名                 /*正则表达式匹配*/                Pattern pattern = Pattern.compile(inputFileName, Pattern.CASE_INSENSITIVE);    //不区分大小写                  Matcher matcher = pattern.matcher(searchFile[i].getName());                if(matcher.find()){                    isexist=true;                       fileItem2.setName(searchFile[i].getName());                     fileItem2.setPath(searchFile[i].getAbsolutePath());                    filesNameList2.add(fileItem2);                  }                 if(searchFile[i].isDirectory() && searchFile[i].canRead()){                    showCurrentAllFile(searchFile[i]);             }        }          if(filesNameList2 != null){            fileAdapter = new FileAdapter(MainFile.this, filesNameList2);             lvFileItem.setAdapter(fileAdapter);            gridView.setAdapter(fileAdapter);             fileAdapter.notifyDataSetChanged();         }    }


[解决办法]
把filesNameList2 = new ArrayList<FileItem>();
这个改成
ArrayList<FileItem> filesNameList2 = new ArrayList<FileItem>();
再试试
[解决办法]
说下个人的看法,不一定对,你可以试验一下。
fileAdapter = new FileAdapter(MainFile.this, filesNameList2);这行代码,你等于是每次又重新new了一个adapter出来了,而这个adapter已经不是原来和listView绑定的adapter了。
这样做等于是每次重新为listView设置一个adapter,你可以试试调用listView的invalidate方法,让其重绘。还有一种方法,直接更改fileAdapter中的数据源,不需要重新new一个出来。这样的话调用notify方法应该没问题,至少在我这里是可以的。
[解决办法]
直接定义一个list搜索出来的覆盖掉list 在调用adapter.notifyDataSetChanged();
[解决办法]
看Adapter和ListView用法是没问题的。

你确定 filesNameList2 确实是有结果的?
fileAdapter = new FileAdapter(MainFile.this, filesNameList2); 这句里filesNameList2确实
更新了getCount,getView相关的数据?
[解决办法]
你用handler从新填充下不久行了吗 同步刷新 有点不靠谱啊

读书人网 >Android

热点推荐