2014-06-09 5 views
0

안녕하세요, 누군가 내 코드를 도와 주실 수 있습니까 ?? 내 SD 카드 + 폴더 이름에 폴더를 표시해야하는 클래스가 있지만 모든 폴더의 이름은 같지만 각각 다른 폴더가 있어야합니다. 어떻게 구현할 수 있습니까 ??android : 이름이있는 모든 폴더를 얻는 방법

public class ThumbnailAdapter extends BaseAdapter { 

// Context required for performing queries 
private final Context mContext; 

// Cursor for thumbnails 
private final Cursor cursor; 

private final int count; 

String bucket; 
String id; 


public ThumbnailAdapter(Context c) { 
    this.mContext = c; 

    // Get list of all images, sorted by last taken first 
    final String[] projection = { 
      MediaStore.Images.Media.BUCKET_ID, 
      MediaStore.Images.Media.BUCKET_DISPLAY_NAME 
    }; 
    String BUCKET_GROUP_BY = 
      "1) GROUP BY 1,(2"; 
    String BUCKET_ORDER_BY = "MAX(datetaken) DESC"; 

    cursor = mContext.getContentResolver().query(
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      projection, 
      BUCKET_GROUP_BY, 
      null, 
      BUCKET_ORDER_BY 
    ); 
    if (cursor.moveToFirst()) { 

     int bucketColumn = cursor.getColumnIndex(
       MediaStore.Images.Media.BUCKET_DISPLAY_NAME); 

     int idColumn = cursor.getColumnIndex(
       MediaStore.Images.Media.BUCKET_ID); 


     do { 
      // Get the field values 
      bucket = cursor.getString(bucketColumn); 
      id = cursor.getString(idColumn); 


     } while (cursor.moveToNext()); 
    } 

    count = cursor.getCount(); 
    Log.d("ThumbnailAdapter", count + " images found"); 
} 

@Override 
public int getCount() { 
    return count; 
} 

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

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


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

     LinearLayout ll = new LinearLayout(mContext); 

     ImageView imageView = new ImageView(mContext); 
     TextView mytext = new TextView(mContext); 
    mytext.setText(bucket); 
     imageView.setImageResource(R.drawable.your_folder_icon); 
     ll.addView(imageView); 
     ll.addView(mytext); 



    return ll; 
} 

답변

0

당신은 아마이 표시되는 텍스트 변경하려면 텍스트 뷰 mytext 설정되지 않습니다 - 라인 시도 :

mytext.setText(projection[position]);

나는 당신이 당신의 projection 문자열 배열을 인덱싱하는 방법을 아주 확실하지 않다가, 그러나 getView() 메서드에서 position 변수를 사용하면 올바른 인덱스를 제공하기 만하면 TextView 이름을 올바르게 변경할 수 있습니다.

+0

그래서 mytext.s 만 추가하면됩니다. etText (투영법 [위치]); – Paltroth

+0

위치에 넣어야하는 위치는 – Paltroth

+0

getView 메소드에서 자동으로 생성됩니다. 당신은 썸네일과 이름의 값을 저장하고있는 배열에서'position'을 호출 할 수 있어야합니다. – krodmannix