2011-10-12 2 views
3

sdcard의 'abc'폴더에서 listview에 비디오 파일을 표시하려고하는데 성공적으로 표시되었지만 'abc'의 sdcard에 저장된 모든 비디오 파일을 표시하는 것이 문제입니다. '실제로는 폴더'abc '에 저장된 비디오 파일 만 표시되도록하고 싶습니다. 나는 더 많은 날 이후로 인터넷 검색을하고 있지만 그것에 대한 해결책을 찾지 못했습니다. 내 코드 :sdcard 폴더의 listview에 비디오 파일을 표시합니다.

videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
proj, null, null, null); 
count = videocursor.getCount(); 
videolist = (ListView) findViewById(R.id.listview); 
videolist.setAdapter(new VideoAdapter(getApplicationContext())); 
videolist.setOnItemClickListener(videogridlistener); 
} 
private OnItemClickListener videogridlistener = new OnItemClickListener() { 
public void onItemClick(AdapterView<?>parent, View v, int position, 
long id) { 
System.gc(); 
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
videocursor.moveToPosition(position); 
String filename = videocursor.getString(video_column_index); 
Intent intent = new Intent(VideoActivity.this, ViewVideo.class); 
intent.putExtra("videofilename", filename); 
startActivity(intent); 
} 
}; 

public class VideoAdapter extends BaseAdapter { 
private Context vContext; 
public VideoAdapter(Context c) { 
vContext = c; 
} 

public int getCount() { 
return count; 
} 

public Object getItem(int position) { 
return position; 
} 

public long getItemId(int position) { 
return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
System.gc(); 
TextView tv = new TextView(vContext.getApplicationContext()); 
String id = null; 
if (convertView == null) { 
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE); 
videocursor.moveToPosition(position); 
id = videocursor.getString(video_column_index); 
tv.setText(id); 
} 
else 
{ 
tv = (TextView) convertView; 
return tv; 
} 

모든 힌트가 있습니까? 미리 감사드립니다.

+0

해결책이 있었습니까? 나는 또한 동일한 문제에 직면하고있다 –

답변

0

이 경우 콘텐츠 공급자를 사용하지 마십시오. 콘텐츠 제공 업체는 장치에서 찾을 수있는 모든 비디오 정보를 제공합니다.

필요한 파일/폴더를 스캔하고 선택하는 데 필요한 유틸리티를 직접 작성하십시오.

+0

그러나 '/ sdcard/abc "의 경로도 지정했지만 모든 비디오 파일을 계속 표시한다 – Larik

0

폴더 이름을 필터링하는 관리 쿼리에 필터링 조건을 제공하십시오.

javadoc for the method을 찾으십시오. 기록 선택 기준이 있습니다. 그러면 원하는 하위 집합을 선택할 수 있습니다.

+1

필터링 기준을 어떻게 제공 할 수 있습니까? Uri를 시도한 적이 있습니다. = Uri.parse ("/ sdcard/abc ") 및 videocursor = managedQuery (a, proj, null, null, null); 여전히 실패 함 – Larik

+0

내가 연결된 javadoc을 참조하십시오. 마지막 세 개의 매개 변수 .. –

0

그나마 사용이 다음 코드 :

video_column_index = videocursor.getColumnIndexOrThrow (MediaStore.Video.Media.DATA);

편집 다음 코드로이 코드 :

videocursor = MainActivity.this.managedQuery (MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 널 (null), MediaStore.Images.Media.DATA + "처럼?", 새로운 String [ ] { "% abc %"}, null);

이 정보는 도움이 될 것입니다. .......

관련 문제