0

内部ストレージ内に保存した画像がいくつかあります。画像ファイルの場所を取得してデコードすることができました。しかし、グリッドビュー内に表示させることができませんでした。また、現時点ではエラーがないため、コードの何が問題になっているのかわかりません。コメントをいただければ幸いです。

    protected void onCreate(Bundle savedInstanceState) 
{   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.web_tab);
    helper = new DBHelper(this);
    Object[] values = helper.get_contentByEmailID(EMAIL);
    this.arrPath = new String[this.count];
    this.thumbnailsselection = new boolean[this.count];

    Log.i(TAG, "values:" +values);
    Log.i(TAG, "filepath:" +values[0]);
    Log.i(TAG, "filepath:" +values[1]);
    Log.i(TAG, "values:" +values.length);

    if(values.length>0){
        for (int i=0;i<values.length;i++){
            Log.i(TAG, "values[]" +values[i]);
            String bImage = (String) values[i];
            bitmap = new Bitmap [this.count];
            bitmap = decodeFile(bImage);


            Log.i(TAG, "bImage"+i+":" +bImage);
            Log.i(TAG, "bitmap"+i+":" +bitmap);
        }
    }
    else{
        Log.i(TAG, "Unable to locate images");
    }


    imagegrid = (GridView) findViewById(R.id.WebImageGrid);
    imageAdapter = new ImageAdapter();
    imagegrid.setAdapter(imageAdapter);


}

以下はImageAdapterコードです。

public class ImageAdapter extends BaseAdapter
{
    private Context mContext;       
    Bitmap[] mImageArray;
    private LayoutInflater mInflater;

    public ImageAdapter() {
        mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        return count;
    }
    public Object getItem(int position)
    {
          return position;
    }
    public long getItemId(int position)
    {
          return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {  
            holder = new ViewHolder();
            convertView = mInflater.inflate(
                    R.layout.galleryitem, null);
            holder.imageview = (ImageView) convertView.findViewById(R.id.thumbImage);
            holder.checkbox = (CheckBox) convertView.findViewById(R.id.itemCheckBox);

            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.checkbox.setId(position);
        holder.imageview.setId(position);


        holder.imageview.setImageBitmap(bitmap[position]);
        holder.checkbox.setChecked(thumbnailsselection[position]);
        holder.id = position;
        return convertView;
    }
}
class ViewHolder {
    ImageView imageview;
    CheckBox checkbox;
    int id;
}               

public Bitmap[] decodeFile(String filePath) 
{
    System.out.println("filepath in decode file .. "+filePath);
    BitmapFactory.Options o = new BitmapFactory.Options();
    o.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filePath, o);

    return bitmap;
}  

アップデート

    Object[] values = helper.get_wbm_synccontentByEmailID(SettingConstant.EMAIL);
    count=values.length;
    this.arrPath = new String[count];
    this.thumbnailsselection = new boolean[count];
    Log.i(TAG, "values:" +values.length);
    String bImage;
    if(count>0){
        bitmap = new Bitmap [count];

        for (int i=0;i<count;i++){
            Log.i(TAG, "values[]" +values[i]);
            bImage = (String) values[i];
            Bitmap newBitmap = decodeFile(bImage);
            this.arrPath[i] = bImage;
            this.bitmap[i] = newBitmap;

        }



    public Bitmap decodeFile(String filePath) 
{
    System.out.println("filepath in decode file .. "+filePath);
    Bitmap bitmapnew = BitmapFactory.decodeFile(filePath);

    return bitmapnew;
}   
4

2 に答える 2

1

これを一瞥してください

decodeFile(String filePath)変更されていないビットマップを返します。したがって、ビットマップはまったく変更されていないと思います(nullを返すだけです)。

  1. ファイルパスを渡し、ビットマップ配列を返します。単一のビットマップイメージを取得し、ビットマップ配列と同じものを渡します。

2. bitmap[i] = decodeFile(bImage);ビットマップの代わりに使用=decodeFile(bImage);および

3.単にへreturn typeの変更decodeFile(String filePath)bitmap

4.return BitmapFactory.decodeFile(filePath,o);ビットマップの代わりに使用します。

于 2012-12-10T10:33:57.783 に答える
0

getViewから返したいのはホルダーであり、変換されたビューではないと思います

于 2012-12-10T08:05:14.250 に答える