Android 如何按gridview位置提取图像

Android 如何按gridview位置提取图像,android,gridview,Android,Gridview,一切正常,只是图片没有显示 基本适配器: public Bitmap getItem(int position) { return bitmaps.get(position); } 活动: Intent i = new Intent(getApplicationContext(), SpcifiesImage.class); // passing array index i.putExtra("id", p

一切正常,只是图片没有显示

基本适配器:

public Bitmap getItem(int position) {
    return bitmaps.get(position);
}
活动:

Intent i = new Intent(getApplicationContext(), SpcifiesImage.class);
                    // passing array index
                    i.putExtra("id", position);`enter code here`
                    startActivity(i);
这是我希望图像将:

Intent intent = new Intent(getApplicationContext(), SpcifiesImage.class);

    Intent i = getIntent();

    // Selected image id
    int position = i.getExtras().getInt("id");
    CustomGrid imageAdapter = new CustomGrid(mContext);

    ImageView imageView = (ImageView) findViewById(R.id.imageView3);
    imageView.setImageBitmap(imageAdapter.bitmaps.get(position));


    // passing array index
    intent.putExtra("mas", massage);

    startActivity(intent);
自定义网格:

         Context mContext;
private Bitmap btimaprecieve;
List<ParseObject> ParseObjects;
ArrayList<Bitmap> bitmaps;
ParseQuery<ParseObject> query;
ProgressDialog progressDialog;
int size;


public CustomGrid(Context c, ArrayList<Bitmap> bitmaps) {
    mContext = c;
    this.bitmaps = bitmaps;

}

public CustomGrid(Context mContext) {
}


//---returns the number of images---
public int getCount() {
    return bitmaps.size();
}

//---returns the ID of an item---
public Bitmap getItem(int position) {
    return bitmaps.get(position);
}

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

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

    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    if (convertView == null) {

        gridView = new View(mContext);

        // get layout from mobile.xml
        gridView = inflater.inflate(R.layout.mobile, null);

        // set value into textview
       // TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label);
      //  textView.setText(mobileValues[position]);

        // set image based on selected text
        ImageView imageView = (ImageView) gridView
                .findViewById(R.id.grid_item_image);
       // imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
       // imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setImageBitmap(bitmaps.get(position));


    } else {
        gridView = (View) convertView;
    }
    return gridView;
public CustomGrid(Context mContext) {
}
Context-mContext;
私人点阵图;
列出解析对象;
阵列列表位图;
解析查询;
进行对话进行对话;
整数大小;
公共CustomGrid(上下文c、ArrayList位图){
mContext=c;
this.bitmaps=位图;
}
公共自定义网格(上下文mContext){
}
//---返回图像的数量---
public int getCount(){
返回位图。size();
}
//---返回项目的ID---
公共位图getItem(int位置){
返回位图。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)mContext
.getSystemService(上下文布局\充气机\服务);
视图网格视图;
if(convertView==null){
gridView=新视图(mContext);
//从mobile.xml获取布局
gridView=充气机。充气(R.layout.mobile,空);
//将值设置为textview
//TextView TextView=(TextView)gridView.findViewById(R.id.grid\u item\u label);
//setText(mobileValues[position]);
//基于选定文本设置图像
ImageView ImageView=(ImageView)gridView
.findviewbyd(R.id.grid\u item\u image);
//setLayoutParams(新的GridView.LayoutParams(70,70));
//imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
setImageBitmap(位图.get(位置));
}否则{
gridView=(视图)convertView;
}
返回gridView;
日志:

进程:com.example.tepper.myapplication,PID:16637
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat,int,java.io.OutputStream)”

好的,根据您发布的代码,此部分存在问题:

在自定义网格上:

         Context mContext;
private Bitmap btimaprecieve;
List<ParseObject> ParseObjects;
ArrayList<Bitmap> bitmaps;
ParseQuery<ParseObject> query;
ProgressDialog progressDialog;
int size;


public CustomGrid(Context c, ArrayList<Bitmap> bitmaps) {
    mContext = c;
    this.bitmaps = bitmaps;

}

public CustomGrid(Context mContext) {
}


//---returns the number of images---
public int getCount() {
    return bitmaps.size();
}

//---returns the ID of an item---
public Bitmap getItem(int position) {
    return bitmaps.get(position);
}

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

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

    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    if (convertView == null) {

        gridView = new View(mContext);

        // get layout from mobile.xml
        gridView = inflater.inflate(R.layout.mobile, null);

        // set value into textview
       // TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label);
      //  textView.setText(mobileValues[position]);

        // set image based on selected text
        ImageView imageView = (ImageView) gridView
                .findViewById(R.id.grid_item_image);
       // imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
       // imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setImageBitmap(bitmaps.get(position));


    } else {
        gridView = (View) convertView;
    }
    return gridView;
public CustomGrid(Context mContext) {
}
构造函数为空,这意味着执行此操作时:

CustomGrid imageAdapter = new CustomGrid(mContext); 

ImageView imageView = (ImageView) findViewById(R.id.imageView3);
imageView.setImageBitmap(imageAdapter.bitmaps.get(position));
位图
数组将不会初始化。 您必须将位图数组设置为静态,或将其存储在可从其他活动访问的位置,仅出于测试目的,请执行以下操作:

  • 更改CustomGrid上的以下行:

             Context mContext;
    private Bitmap btimaprecieve;
    List<ParseObject> ParseObjects;
    ArrayList<Bitmap> bitmaps;
    ParseQuery<ParseObject> query;
    ProgressDialog progressDialog;
    int size;
    
    
    public CustomGrid(Context c, ArrayList<Bitmap> bitmaps) {
        mContext = c;
        this.bitmaps = bitmaps;
    
    }
    
    public CustomGrid(Context mContext) {
    }
    
    
    //---returns the number of images---
    public int getCount() {
        return bitmaps.size();
    }
    
    //---returns the ID of an item---
    public Bitmap getItem(int position) {
        return bitmaps.get(position);
    }
    
    @Override
    public long getItemId(int position) {
        return position;
    }
    
    public View getView(int position, View convertView, ViewGroup parent) {
    
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
        View gridView;
    
        if (convertView == null) {
    
            gridView = new View(mContext);
    
            // get layout from mobile.xml
            gridView = inflater.inflate(R.layout.mobile, null);
    
            // set value into textview
           // TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label);
          //  textView.setText(mobileValues[position]);
    
            // set image based on selected text
            ImageView imageView = (ImageView) gridView
                    .findViewById(R.id.grid_item_image);
           // imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
           // imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setImageBitmap(bitmaps.get(position));
    
    
        } else {
            gridView = (View) convertView;
        }
        return gridView;
    
    public CustomGrid(Context mContext) {
    }
    
    ArrayList位图;
    公共静态ArrayList位图;

  • 然后在下一个活动中,按如下方式访问它:

    imageView.setImageBitmap(CustomGrid.bitmap.get(position));


请显示填充适配器图像的代码好吗?我猜@MightySeal指的是
CustomGrid
代码。您指的位置,是用户选择的GridView上的图像位置?还是以其他方式获得该位置?我想我没有完全理解您的问题。是吗这是用户在GridView上选择的图像位置…看,用户单击GridView中的某个项目和他单击的图片我想发送另一个活动我在GridView中有图像,但我无法拍摄用户按的图像,此代码不是代码,因为再次运行部门毫无意义I抱歉,我是直到我不知道你在问什么..试着发布你的
CustomGrid
类代码和XML布局代码,也许这会澄清你的问题你的编辑被审阅者拒绝了。你必须编辑你的问题,而不是我的答案:)我将其更改为imageView.setImageBitmap(CustomGrid.bitmaps.get(position));但“position”中有错误你得帮我,我两天都不能