2013-04-19 23 views
0

如何添加圖像到圖像本身和文本的網格視圖。我試圖製作自定義圖像適配器,但它不適用於某些原因在imgView.setLayoutParams(新的GridView.LayoutParams(85,85))上崩潰;imageview和文字自定義imageadapter

新的問題,我可以如何添加和從圖像適配器中刪除...我需要的行爲是像一個圖片與A和我添加相同的圖片與文本AB所以應該有2個圖片,然後我可以刪除一用一..

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'是ConvertView的子元素,它從R.layout.album_image中膨脹出來,它不過是一個LinearLayout。因此,在設置佈局參數時,它需要是父項ViewGroup類型。所以LinearLayout.LayoutParams工作正常。

假設你想設置'ConvertView'的大小,那麼在這種情況下,它需要是GridView.LayoutParams,因爲'ConvertView'被添加到父級GridView中。

希望你明白了.. !!