2013-06-07 6 views
0

목록보기에서 다른 활동으로 이미지를 보내려고합니다. 나는 대부분 일을 해냈다 고 생각하지만, 나는 진지하게 nullpointerexeptioon을 얻고있다. 내 비트 맵이 null 인 것 같습니다. 선택한 항목의 이미지를 자원으로 비트 맵에 전달하려면 어떻게해야합니까?listview에서 이미지를 가져 오는 방법은 무엇입니까?

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); 

어댑터

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; 
    } 
} 

답변

2

노력이

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(); 
    } 
}); 
0

Bitmap bitmap=BitmapFactory.decodeResource(getResources(),imm_id.getId()); 
getResources()imm_id.getId()의 값을 찾기 위해 디버그 도구를 사용하는 것이 좋을 것이다
관련 문제