2013-04-19 1 views
0

어떻게 이미지 자체와 텍스트가 포함 된 gridview에 이미지를 추가 할 수 있습니까? 사용자 지정 이미지 어댑터를 만들려고했지만 somereason에서 작동하지 않습니다. imgView.setLayoutParams (new GridView.LayoutParams (85, 85));imageview와 text가있는 사용자 정의 imageadapter

새로운 질문 이미지 어댑터에서 추가하고 제거 할 수있는 방법은 무엇인가요? 하나의 사진과 같은 동작이 필요합니다. 그리고 텍스트 사진이있는 동일한 사진을 추가하여 2 개의 사진을 만들어야합니다. A를 하나 ..

import java.util.ArrayList; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class AlbumAdapter extends BaseAdapter { 

    private Context mContext; 
    private ArrayList albNames; 

    public AlbumAdapter(Context c, ArrayList albNames) { 

     mContext = c; 
     this.albNames = albNames; 
    } 

    public int getCount() { 

     return mThumbIds.length; 
    } 

    public Object getItem(int position) { 

     return null; 
    } 

    public long getItemId(int position) { 

     return 0; 
    } 

    // create a new ImageView for each item referenced by the Adapter 
/* public View getView(int position, View convertView, ViewGroup parent) { 

     ImageView imageView; 

     if (convertView == null) { // if it's not recycled, initialize some attributes 

      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(10, 10, 10, 3); 
     } 

     else { 

      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 
    } 

    */ 

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

     View view; 

     if (convertView == null) { 

      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.album_image, null); 
     } 

     else { 

      view = convertView; 
     } 

     ImageView imgView = (ImageView) view.findViewById(R.id.icon_image); 
     imgView.setLayoutParams(new LinearLayout.LayoutParams(50, 50)); 
     imgView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imgView.setPadding(10, 10, 10, 3); 
     TextView albNameView = (TextView) view.findViewById(R.id.icon_text); 

     if (albNames.size() > 0) { 

      for (int i = 0; i < albNames.size(); i++) { 

       imgView.setBackgroundResource(R.drawable.folder);   
       albNameView.setText((String)albNames.get(i)); 

      } 

     } 




     return view; 
    } 


    // references to our images 
    public Integer[] mThumbIds = { R.drawable.folder}; 

} 

답변

0

편집

imgView.setLayoutParams(new LinearLayout.LayoutParams(85, 85)); 

시도

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class AlbumAdapter extends BaseAdapter { 

    private Context mContext; 

    public AlbumAdapter(Context c) { 

     mContext = c; 
    } 

    public int getCount() { 

     return mThumbIds.length; 
    } 

    public Object getItem(int position) { 

     return null; 
    } 

    public long getItemId(int position) { 

     return 0; 
    } 

    // create a new ImageView for each item referenced by the Adapter 
/* public View getView(int position, View convertView, ViewGroup parent) { 

     ImageView imageView; 

     if (convertView == null) { // if it's not recycled, initialize some attributes 

      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(10, 10, 10, 3); 
     } 

     else { 

      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 
    } 

    */ 

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

     View view; 

     if (convertView == null) { 

      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.album_image, null); 
     } 

     else { 

      view = convertView; 
     } 

     ImageView imgView = (ImageView) view.findViewById(R.id.icon_image); 
     imgView.setLayoutParams(new LinearLayout.LayoutParams(85, 85)); 
     imgView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imgView.setBackgroundResource(R.drawable.a); 

     TextView albNameView = (TextView) view.findViewById(R.id.icon_text); 
     albNameView.setText("as"); 

     return view; 
    } 


    // references to our images 
    public Integer[] mThumbIds = { R.drawable.a }; 

} 
+0

왜이 문제가 해결 되었습니까? – jrdnsingh89

+0

저는 imageview의 부모가 선형 레이아웃이라고 생각합니다. 너 해봤 니? –

+0

위의 logcat을 확인하십시오 ... – jrdnsingh89

0

'imgView'는 R.layout.album_image에서 부풀어 오른 ConvertView의 자식이며 LinearLayout 이외의 것입니다. 따라서 레이아웃 매개 변수를 설정하는 동안 부모 ViewGroup 유형이어야합니다. 그래서 LinearLayout.LayoutParams는 정상적으로 작동합니다.

'ConvertView'의 크기를 설정하고 싶다면 GridView.LayoutParams가 필요합니다. beConz 'ConvertView'가 GridView 인 parent에 추가됩니다.

희망이 있습니다 .. !!

관련 문제