2015-11-16 185 views
1

我正在尝试使用它的uri将手机图库中的图像添加到gridView中。 不幸的是,它没有做任何事情,我似乎无法找到一种方法使其工作。在GridView中设置图像Uri

我的适配器:

public class ImageGridAdapter extends BaseAdapter { 


public Uri imageUri; 


private Context mContext; 

public ImageGridAdapter(Context c) { 
    this.mContext = c; 
} 

@Override 
public int getCount() { 

    return 0; 
} 

@Override 
public Object getItem(int position) { 

    return null; 
} 

@Override 
public long getItemId(int position) { 

    return 0; 
} 


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

    imageUri = PictureGroupActivity.selectedImage; 


    ImageView imageView; 
    if (convertView == null) { 
     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.setImageURI(null); 
    imageView.setImageURI(imageUri); 

    return imageView; 
    } 
} 

的adpater应onActivtyResult服用的imageUri:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    gridView = (GridView)findViewById(R.id.picture_group_gridView); 

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
     selectedImage = data.getData(); 
     String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
     Toast.makeText(PictureGroupActivity.this, "selectedImage ma hodnotu: " + selectedImage, Toast.LENGTH_SHORT).show(); 


    } 
} 

我设置在GridView在我的onCreate我的活动里面像这样:

GridView gridView = (GridView)findViewById(R.id.picture_group_gridView); 
    gridView.setAdapter(new ImageGridAdapter(this)); 

    gridView.invalidateViews(); 

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(PictureGroupActivity.this, "You clicked " + position, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

从图库中选择一张照片时,gridView保持空白。你如何使它工作?我究竟做错了什么 ?先谢谢你。

回答

0
public class ImageGridAdapter extends BaseAdapter { 


public Uri imageUri; 


private Context mContext; 

public ImageGridAdapter(Context c) { 
    this.mContext = c; 
} 

@Override 
public int getCount() { 

    return 5; 
} 

@Override 
public Object getItem(int position) { 

    return null; 
} 

@Override 
public long getItemId(int position) { 

    return 0; 
} 


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

    imageUri = PictureGroupActivity.selectedImage; 


    ImageView imageView; 
    if (convertView == null) { 
     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.setImageURI(null); 
    imageView.setImageURI(imageUri); 

    return imageView; 
    } 
} 
+0

谢谢,终于做了一件事! :D它将图片添加到gridView中(将5更改为1)但添加另一张图片时会覆盖,您如何保留它? – Dunoo

+0

将PictureGroupActivity.selectedImage更改为ArrayList。一旦你得到一个图像,你存储uri。并在getitemcount中返回列表的大小。 –

0

如果您总是从getCount()返回0,那么您的列表将始终为空。同样,您需要从getItem()返回一些内容,以便您的视图知道哪些数据与哪个列表项关联。您可能需要使用更具体的Adapter实现,例如ArrayAdapter,它可以为您处理这些问题。

+0

不够公平,我在getCount()中返回1,现在它最终显示在gridView中。我现在想让图片留在那里,当我添加另一张图片时,有任何帮助吗? – Dunoo