Android 如何从listview获取图像?

Android 如何从listview获取图像?,android,listview,bitmap,nullpointerexception,Android,Listview,Bitmap,Nullpointerexception,我想将图像从列表视图发送到其他活动。我想我已经完成了大部分工作,但我不断地得到nullpointerexeption。我的位图似乎是空的。如何将图像作为资源从choosen项传递到位图 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1

我想将图像从列表视图发送到其他活动。我想我已经完成了大部分工作,但我不断地得到nullpointerexeption。我的位图似乎是空的。如何将图像作为资源从choosen项传递到位图

lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int position, long id) {

                    ImageView imm_id = ((ImageView) arg1.findViewById(R.id.imagePrev));
                    imm_id.getId();
                    RequestDataHolder.request_id = ids.get(position);
                    Bitmap bitmap=BitmapFactory.decodeResource(getResources(), imm_id.getId());
                    ByteArrayOutputStream stream=new ByteArrayOutputStream();
                    bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
                    byte[] imm=stream.toByteArray();
                    Intent i = new Intent(getApplicationContext(),ResultViewActivity.class);
                    i.putExtra("imMap", imm);
                    startActivity(i);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
内部位置,长id){
ImageView imm_id=((ImageView)arg1.findViewById(R.id.imagePrev));
imm_id.getId();
RequestDataHolder.request_id=ids.get(位置);
位图Bitmap=BitmapFactory.decodeResource(getResources(),imm_id.getId());
ByteArrayOutputStream=新建ByteArrayOutputStream();
compress(bitmap.CompressFormat.PNG,90,stream);
字节[]imm=stream.toByteArray();
Intent i=新Intent(getApplicationContext(),ResultViewActivity.class);
i、 putExtra(“imMap”,imm);
星触觉(i);
适配器

public class MediaItemAdapter extends SimpleAdapter {
    private int[] colors = new int[] { 0x30FF0000, 0x300000FF };
    public static boolean notifyFlag = false;
    private Context localContext;
    private List<HashMap<String, Object>> locallist;
    private static LayoutInflater inflater=null;
    private Object rslv;
    public ImageView imgV;
    public String valueV;
    Map cache = new HashMap();
    public MediaItemAdapter(Context context,
            List<HashMap<String, Object>> items, int resource,
            String[] from,
            int[] to) {
        super(context, items, resource, from, to);
        localContext = context;
        locallist = items;
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public void setViewText(TextView v, String text) {
        // метод супер-класса, который вставляет текст
        super.setViewText(v, text);
        {
            v.setText(Html.fromHtml(text));
        }
    }
    @Override
    public void setViewImage(ImageView v, String value) {
        imgV = v;
        valueV = value;
        super.setViewImage(v, value);
        if (imgV.getId() == R.id.imagePrev) {
            if (value == null || value.trim().length() <= 0
                    || value.equalsIgnoreCase("null")
                    || value.trim().equalsIgnoreCase("")) {
                imgV.setImageResource(R.drawable.stub);
                // do nothing
            } else {
                if (cache.get(value) == null
                        && !SearchPostActivity.loadingMore) {
                    notifyFlag = false;
                    new LazyImageLoader(localContext, value).execute();
                } else {
                    imgV.setImageBitmap((Bitmap) cache.get(value));
                }
            }
        }
    }

    class LazyImageLoader extends AsyncTask<String, Integer, Bitmap> {
        private String URL;
        private Context context;

        public LazyImageLoader(Context context, String Url) {
            URL = Url;
            LazyImageLoader.this.context = context;
        }
        @Override
        protected void onPreExecute() {
            imgV.setImageResource(R.drawable.home);
        }
        @Override
        protected Bitmap doInBackground(String... params) {
            return getImg();
        }
        @Override
        protected void onPostExecute(Bitmap img) {
            if (!SearchPostActivity.scrollFlag) {
                imgV.setImageBitmap(img);
                notifyDataSetChanged();
            }
            notifyFlag = true;
            cache.put(URL, img);
        }
        public synchronized Bitmap getImg() {
            Bitmap bm = null;
            try {
                URL myurl;
                myurl = new URL(URL);
                URLConnection conn = myurl.openConnection();
                conn.connect();
                InputStream is = conn.getInputStream();
                bm = BitmapFactory.decodeStream(is);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return bm;

        }

    }
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.item_composer, null);
        ImageView thumb_image=(ImageView)vi.findViewById( R.id.imagePrev);

        return vi;
    }
}
公共类MediaItemAdapter扩展了SimpleAdapter{
私有int[]颜色=新int[]{0x30FF0000,0x300000FF};
公共静态布尔notifyFlag=false;
私有上下文localContext;
私有列表locallist;
专用静态充气机=空;
私有对象rslv;
公共图像视图imgV;
公共字符串值v;
映射缓存=新的HashMap();
公共MediaItemAdapter(上下文,
列表项,int资源,
字符串[]来自,
int[]至){
超级(上下文、项目、资源、发件人、收件人);
localContext=context;
locallist=项目;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
公共void setViewText(文本视图v,字符串文本){
// метод супер-класса, который вставляет текст
super.setViewText(v,text);
{
v、 setText(Html.fromHtml(text));
}
}
@凌驾
public void setViewImage(ImageView v,字符串值){
imgV=v;
valueV=值;
super.setViewImage(v,值);
if(imgV.getId()==R.id.imagePrev){
如果(value==null | | value.trim().length()请尝试以下操作

 yourListView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(final AdapterView<?> adapterView, final View view, final int position, final long id) {
        final ImageView imageView = (ImageView) view.findViewById(R.id.imageViewXYZ);
        final BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
        final Bitmap yourBitmap = bitmapDrawable.getBitmap();
    }
});
yourListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(最终适配器视图适配器视图、最终视图视图、最终整型位置、最终长id){
final ImageView ImageView=(ImageView)view.findViewById(R.id.imageViewXYZ);
final BitmapDrawable BitmapDrawable=(BitmapDrawable)imageView.getDrawable();
最终位图yourBitmap=bitmapDrawable.getBitmap();
}
});

最好使用调试工具在以下位置查找
getResources()
imm\u id.getId()的值

Bitmap bitmap=BitmapFactory.decodeResource(getResources(),imm_id.getId());