Я создал растровое изображение, а затем установить, что растровое изображение в качестве 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()? Могу ли я сделать это (если нет, то как ???)
возможного дубликат [типа getIntent() не определено для адаптера] (http://stackoverflow.com/questions/19967506/the-type-getintent-is-undefined-for-adapter) – panini