基于媒体库查询
void search(String s) {
String[] projection = new String[]{ MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.DATE_MODIFIED, MediaStore.Files.FileColumns.SIZE, MediaStore.Files.FileColumns._ID };
Cursor cursor = getContentResolver().query(MediaStore.Files.getContentUri("external"), projection, MediaStore.Files.FileColumns.DATA + " LIKE ?", new String[]{ "%" + s + "%" }, MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC");
int count = cursor.getCount();
setTitle("搜索 " + count);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, cursor, new String[] { MediaStore.Video.Media.DATA, MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DATE_MODIFIED, MediaStore.Video.Media._ID }, new int[] { R.id.textView_path, R.id.textView_name, R.id.textView_size, R.id.textView_time, R.id.imageView_icon }, CursorAdapter.FLAG_AUTO_REQUERY);
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
String path = "";
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if (view.getId() == R.id.textView_name) {
path = cursor.getString(columnIndex);
((TextView) view).setText(path.substring(path.lastIndexOf("/") + 1));
return true;
} else if (view.getId() == R.id.textView_size) {
long filesize = cursor.getLong(columnIndex);
((TextView) view).setText(Formatter.formatFileSize(SearchActivity.this, filesize));
return true;
} else if (view.getId() == R.id.textView_time) {
Date date = new Date(cursor.getLong(columnIndex) * 1000);
((TextView) view).setText(SDF.format(date));
return true;
} else if (view.getId() == R.id.imageView_icon) {
String mime = URLConnection.getFileNameMap().getContentTypeFor(path);
if (mime == null) {
((ImageView) view).setImageResource(R.mipmap.file);
} else if (mime.startsWith("video/")) {
int id = cursor.getInt(columnIndex);
Bitmap bitmap = MediaStore.Video.Thumbnails.getThumbnail(getContentResolver(), id, MediaStore.Video.Thumbnails.MINI_KIND, null);
if (bitmap != null)
((ImageView) view).setImageBitmap(bitmap);
else
((ImageView) view).setImageResource(R.mipmap.video);
} else if (mime.startsWith("image/")) {
int id = cursor.getInt(columnIndex);
Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null);
if (bitmap != null)
((ImageView) view).setImageBitmap(bitmap);
else
((ImageView) view).setImageResource(R.mipmap.image);
} else if (mime.startsWith("audio/")) {
((ImageView) view).setImageResource(R.mipmap.audiofile);
} else if (mime.equals("text/plain")) {
((ImageView) view).setImageResource(R.mipmap.txtfile);
} else if (mime.equals("text/html")) {
((ImageView) view).setImageResource(R.mipmap.htmlfile);
} else if (mime.equals("application/msword")) {
((ImageView) view).setImageResource(R.mipmap.docfile);
} else if (mime.equals("application/pdf")) {
((ImageView) view).setImageResource(R.mipmap.pdffile);
} else if (mime.equals("application/x-tar") || mime.equals("application/zip") || mime.equals("application/x-gzip")) {
((ImageView) view).setImageResource(R.mipmap.zipfile);
} else {
((ImageView) view).setImageResource(R.mipmap.file);
}
return true;
}
return false;
}
});
listView.setAdapter(adapter);
}
?编辑框文字变化触发
EditText editText;
editText = findViewById(R.id.editText);
editText.addTextChangedListener(new EditChangedListener());
class EditChangedListener implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().equals("")) {
listView.setAdapter(null);
} else {
search(s.toString());
}
}
}
?

?
?
|