2015-11-16 182 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