2013-11-14 3 views
0

Я создал растровое изображение, а затем установить, что растровое изображение в качестве ByteArray,Проблема получения растрового изображения и установки в качестве изображения

addCheckbox 
      .setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        if (addCheckbox.isChecked()) { 
         System.out.println("Checked"); 
         PackageManager pm = mContext.getPackageManager(); 
         Drawable icon = null; 
         try { 
          icon = pm 
          .getApplicationIcon(entry.activityInfo.packageName); 
         } catch (NameNotFoundException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         Drawable default_icon = pm.getDefaultActivityIcon(); 
         if (icon instanceof BitmapDrawable 
           && default_icon instanceof BitmapDrawable) { 
          BitmapDrawable icon_bd = (BitmapDrawable) icon; 
          Bitmap icon_b = icon_bd.getBitmap(); 
          BitmapDrawable default_bd = (BitmapDrawable) pm 
            .getDefaultActivityIcon(); 
          Bitmap default_b = default_bd.getBitmap(); 
          if (icon_b == default_b) { 
           // It's the default icon 
           scaleDownBitmap(default_b, 100, v.getContext()); 
           Log.d("AppInfoAdapter", "Scale Bitmap Chosen"); 

           ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
           default_b.compress(Bitmap.CompressFormat.PNG, 100, stream); 
           byte[] byteArray = stream.toByteArray(); 
           Log.d("AppInfoAdapter", "Scale Bitmap to Array"); 

           Intent intent = new Intent(v.getContext(), GridViewAdapter.class); 
           intent.putExtra("picture", byteArray); 
           v.getContext().startActivity(intent); 
           Log.d("AppInfoAdapter", "Intent started to send Bitmap"); 
          } 
         } 
        } else { 
         System.out.println("Un-Checked"); 
        } 

       } 
      }); 

и пытаюсь установить его как изображение в моей GridView здесь:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.drag_and_drop_app); 
    Log.d("GridView", "onCreate called"); 
    drawables.add(R.drawable.pattern1); 
    drawables.add(R.drawable.pattern2); 
    Bundle extras = getIntent().getExtras(); 
    byte[] byteArray = extras.getByteArray("picture"); 
    Bitmap default_b = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
    view.setImageBitmap(default_b); !THIS LINE IS NOT CORRECT! 
    drawables.add(default_b); !THIS LINE IS NOT CORRECT! 

, а затем вот мой GridView адаптер:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // Try to reuse the views 
    ImageView view = (ImageView) convertView; 
    // if convert view is null then create a new instance else reuse it 
    if (view == null) { 
     view = new ImageView(mContextGV); 
    } 
    view.setImageResource(drawables.get(position)); 
    view.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    view.setLayoutParams(new android.widget.GridView.LayoutParams(70, 70)); 
    view.setTag(String.valueOf(position)); 
    return view; 
} 

Не полный адаптер, конечно, но только часть, где я получаю View

Так что я не могу получить растровое изображение в адаптере gridView, потому что getIntent() не работает с базовым адаптером, поэтому я пытаюсь получить его в своем классе, который вызывает мой адаптер , Я не уверен, как это сделать. Я попытался добавить его в мои drawables ArrayList, а затем установить это как представление, но это не работает. Как я могу получить дополнительную информацию? ((Как я могу получить массив, а затем настроить его так, чтобы он отображался в моем GridView?))

Итак, чтобы понять, что я пытаюсь сделать, это получить представление из моего адаптера и затем установите растровое изображение, которое я получаю в дополнительных функциях как setImageBitmap()? Могу ли я сделать это (если нет, то как ???)

+0

возможного дубликат [типа getIntent() не определено для адаптера] (http://stackoverflow.com/questions/19967506/the-type-getintent-is-undefined-for-adapter) – panini

ответ

0

Пройдите свой контекст активности конструктору адаптер

там вы можете получить доступ к умыслу как этот

((Activity)mContext).getIntent() 
Смежные вопросы