2013-03-13 51 views
0

首先,我必須讓自己的適配器類在gridview中設置圖像嗎?它的接縫效率不高,要求我每次創建一個gridview時都會創建一個新類。gridview/adapater問題,向gridview添加圖片

我已經遇到的問題是,我不能讓我的GridView

package joshpike.hsh.hsh_game; 

import java.io.IOException; 
import java.io.InputStream; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 



public class DisplayActivity extends MainActivity 
{ 

    public class ImageAdapter extends BaseAdapter 
    { 



     private Context mContext; 

     // 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(8, 8, 8, 8); 
      } 
      else 
      { 
       imageView = (ImageView) convertView; 
      } 

      imageView.setImageResource(imageArray[position]); 
      return imageView; 

     } 


     private Integer[] imageArray = 
     { 
      //currentImageView(0, "xh","bottom",0,0), currentImageView(0, "xh","bottom",1,0)  
      R.drawable.level_1_bottom, R.drawable.level_1_top 




     }; 





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

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

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

    } 



    // Inflate the menu; this adds items to the action bar if it is present. 
    //makes the options menu 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     getMenuInflater().inflate(R.menu.display, menu); 
     return true; 
    } 

    //what happens if you select items from the options menu 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch (item.getItemId()) 
     { 
      case R.id.miniMap: 

      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    //called when activity is started for first time either for first time or after destoryed 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.display); 


     GridView bottomMapGrid = (GridView)findViewById(R.id.bottomMapGrid); 


     bottomMapGrid.setAdapter(new ImageAdapter()); 

     System.out.println("DisplayActivity onCreate done");   
    } 

回答

0
@Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.display); 
     GridView bottomMapGrid = (GridView)findViewById(R.id.bottomMapGrid); 
     bottomMapGrid.setAdapter(new ImageAdapter(this)); 
     System.out.println("DisplayActivity onCreate done");   
    } 

和轉接類使用這樣

public class ImageAdapter extends BaseAdapter 
    { 
     private Context mContext; 

     public ImageAdapter(Context mContext){ 
      this.mContext=mContext; //<<< initialize here 
     } 
     //....your code here 
    } 

,並從活動通過使電流活動上下文的創建ImageAdapter實例

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    public ImageAdapter(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(8, 8, 8, 8); 

     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 

     return imageView; 
    } 

    // references to our images 
    private Integer[] mThumbIds = { R.drawable.sample_2, R.drawable.sample_3, 
      R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, 
      R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, 
      R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, 
      R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, 
      R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, 
      R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, 
      R.drawable.sample_6, R.drawable.sample_7 }; 
} 
+0

感謝大家,問題解決了 – user2133669 2013-03-13 20:46:16

0

當前正在傳遞空mContextImageView構造創建它自己的形象apear。你需要用它作爲前初始化mContext

bottomMapGrid.setAdapter(new ImageAdapter(DisplayActivity.this));