2014-06-09 2 views
1

BUCKET_LIST_NAME을 (를) 사용하여 모든 폴더와 폴더 이름을 표시하는 클래스 어댑터가 있습니다. 그러나 폴더는 같은 이름 = 사진을 가지고 있습니다. 다른 이름을 얻는 방법, 나는 각 폴더의 진짜 이름을 얻는 방법을 의미한다 ??? 감사.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

당신이 당신의 문제를 자세히 설명해 할 수 있습니까? – Andrain

+0

폴더 (이미지 포함) + 폴더 이름을 표시하고 싶습니다. BUCKET_LIST_NAME을 (를) 사용하여 폴더의 이름을 가져 왔지만 각 폴더에는 동일한 이름이 표시됩니다. 각 폴더의 이름은 "사진"이지만 다른 이름이어야합니다. http://postimg.org/image/jhq77ct7h/ – Paltroth

+0

화면을 보시고 화면을 보여 주시겠습니까? – Andrain

답변

0

는 커서를 초기화 :이와 어댑터에

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 
    ); 

패스 :

CursorAdapter adapter = ThumbnailAdapter(mContext, cursor); 

어댑터 클래스 :

public class ThumbnailAdapter extends CursorAdapter 
{ 
    LayoutInflater mInflater; 
    Context context; 
    Cursor cursor; 
    String bucket; 
    String id; 

    public ThumbnailAdapter(Context context, Cursor c) 
    { 
     super(context, c); 
     this.context = context; 
     this.cursor = c; 
     mInflater = LayoutInflater.from(context); 
    } 
    @Override 
    public void bindView(View view, Context context, Cursor cursor) 
    { 
     TextView mytext = (TextView) view.findViewById(R.id.mytext); 
     ImageView imageView = (ImageView) view.findViewById(R.id.imageView); 

     mytext.setText(bucket); 
     imageView.setImageResource(R.drawable.your_folder_icon); 
    } 
    @Override 
    public View newView(Context arg0, Cursor arg1, ViewGroup arg2) 
    { 
     View v = mInflater.inflate(R.layout.checklistitem_withbutton, null); // Your XML View. 
     return v; 
    } 
} 
+0

코드가 똑같은 것을 내 것이기 때문에 그렇게하지 않습니까 ??? 2 개의 어댑터가 필요한 이유는 무엇입니까? – Paltroth

+0

어댑터가 배열에서 다른 항목을 가져 가지 않는다고 설명 할 수 있습니까? 하지만 내 어댑터가 커서에서 작동하므로 커서의 값이 자동으로 적용됩니다. 어댑터를 광산으로 교체해야합니다. – Andrain

+0

죄송합니다.이 코드는 1 개의 클래스 또는 2 개의 다른 코드에 있어야합니다. Cursoradapter 클래스에서 커서를 만들어야합니까 ?? – Paltroth