android - 无法从自定义 ListView onItemClick [EDIT ] 获取 ImageView

  显示原文与译文双语对照的内容
0 0

我已经实现了自定义 ListView,这是每一行的结构:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"> 
<ImageView
android:id="@+id/imagenEvento"
android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="centerCrop"
android:adjustViewBounds="false"
android:paddingBottom="2dp" 
android:contentDescription="@string/contenidoImagen" 
/>
<LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:gravity="left"
 android:padding="10dp"
 android:orientation="vertical"> 
 <TextView
 android:id="@+id/titulo"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="17sp"
 android:textAppearance="?android:attr/textAppearanceLarge"/>
 <TextView
 android:id="@+id/sitio"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="12sp"
 android:textAppearance="?android:attr/textAppearanceSmall"/>
 <TextView
 android:id="@+id/fecha"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="12sp"
 android:textAppearance="?android:attr/textAppearanceSmall"/>
</LinearLayout>

我已经经设置到ListView和适配器,但是在读取数据时,它可以以很好地工作,但是我可以以将它发送到另一个活动。

lv = (ListView) findViewById(R.id.lista); 
 lv.setOnItemClickListener(new OnItemClickListener() {
 @Override
 public void onItemClick(AdapterView<?> a, View v, int position, long id) {
//creo el nuevo objeto para poder llamarlo
 Intent intent = new Intent(AllProductsActivity.this, PostActivity.class);
//Creo la informacion para pasar entre actividades
 Bundle informacion= new Bundle();
 informacion.putInt("id", eventos.get(position).getID());
 Bitmap bmp = BitmapFactory.decodeResource(a.getResources(), R.id.imagenEvento);
 ByteArrayOutputStream stream = new ByteArrayOutputStream();
 bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
 byte[] byteArray = stream.toByteArray();
 informacion.putByteArray("imagen", byteArray); 
 }
 });

我正在获取我的bmp为空:

Bitmap bmp = BitmapFactory.decodeResource(a.getResources(), R.id.imagenEvento);

我想我应该指出由于它在ListView中的位置,但我不知道如何做到这一点。

[EDIT] 解决了问题,我在下一个 Activity 中获得图像,但是,我总是从这个 Activity的ListView获得图像。

时间:原作者:2个回答

0 0

ImageView 使用,以便在稍后使用直接传递引用,并在需要时将它的保存为 byte array,然后将它的保存为,然后将它的保存为 byte,以后使用它作为 imageView.setImageBitmap(bitmap);

imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
public String BitmapToString(Bitmap bitmap){
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 bitmap.compress(Bitmap.CompressFormat.JPEG,100,baos);
 byte[] b = baos.toByteArray();
 String image = Base64.encodeToString(b, Base64.DEFAULT);
 return image;
}
public Bitmap StringToBitmap(String image){
 byte[] encodeByte = Base64.decode(image, Base64.DEFAULT);
 Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
 return bitmap;
}
原作者:
0 0

替代:

Bitmap bmp = BitmapFactory.decodeResource(a.getResources(), R.id.imagenEvento);

获取位图图像。 尝试这个:

ImageView image = (ImageView)v.findViewByID(R.id.iamgeenEvento);
Bitmap bmp = ((BitmapDrawable)image.getDrawable()).getBitmap();

你的原始代码正在试图将ipqos本身解码为位图,并且不是位图将返回空值。

原作者:
...