마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ArrayList.get(index) 사용에 관해서 질문합니다.

0 추천

ArrayList<String> getVideoFolder 에는 (*수정) MediaStroe 함수를 이용한 스마트폰내의 모든 동영상 폴더의 이름만 들어있습니다.

query에 selection을 적용시켜주고 있는데,  예를들어

String selection = MediaStore.Video.Media.DATA + " like ?"

String[] SelectionArgs = {getVideoFolder.get(0)} 이런식으로 사용하면 그 값에 맞는 아이템만 표시해줄수 있었습니다. 그런데... id값이 고정되 있는터라 모든 아이템에  0이라는 값이 적용되더군요.

각 아이템에 맞게 ArrayList .get(int inedx)를 설정하는 방법이 있나요?

CEL (1,140 포인트) 님이 2014년 2월 2일 질문
CEL님이 2014년 2월 3일 수정
더 이해하기 쉽게 질문 해주셔야 할 듯 싶네요...

2개의 답변

+1 추천
질문이 정확하게 뭔지 확실하게는 모르겠지만 아이템에 맞게 ArrayList의 index를 설정하고싶다는 건가요?

그러니까 이 아이템이면 이 index이고 이렇게 말이지요?

그 경우에는 ArrayList보다는 HashMap을 사용하는 것이 더 좋지 않을까요?
인연 (31,880 포인트) 님이 2014년 2월 3일 답변
저도 아직 초보자라 아는 것은 없지만, ArrayList를 보여주는 이유는 getView를 통해서 썸네일을 보여주는 것도 있고, MediaStore함수를 이용하는데 있어서 편리하다고 생각되어 ArrayList를 사용했습니다.
HashMap은... 어떻게 해야할지 모르겠네요.
+1 추천

어쨋든 ArrayList<String> getVideoFolder에 폴더의 이름이 있으면

쿼리문날릴때 Media의 데이터를 가져오려면 ArrayList를 써서 Add시켜야 하는데..idx로 for문에 증가값 i 를 쓰시면 되는거아닌가요..

 

예를들면

쿼리문에 뽑아온값을 cursor로 돌리면서 ArrayList에 넣는다고치면..

class VideoData{

int idx;

String name;

String data;

}

ArrayList<VideoData> aa = new ArrayList<VideoData>;

int i = 0;

for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
           VideoData data = new VideoData();
           data.idx = i;
           data.name = cursor.getString(번호);
           data.data = cursor.getString(번호);
            aa .add(data);
         i++;
        }
whdrb19 (23,520 포인트) 님이 2014년 2월 3일 답변
모든 MediaStore리스트는 do ~ while문을 이용했습니다.
if(cursor != null && cursor.moveToFirst()){
do{
.
.
}While(cursor.moveToNext());


제가 설정하려는 것은
//ContentResolver cr = getContentResolver;
String[] proj = { MediaStroe.Video.Media .....}

cursor = cr.query(uri, String[] proj, String selection, String[] selectionArgs, sortOrder)

String selection, String[] selectionArgs 에 필터를 설정해주고 있는 것입니다.
제가 본문을 너무 자세하게 적지 않은 것같네요...
...