2012-12-18 66 views
1

喜IAM正在嘗試從手機聯繫人圖片到我arrayadapter安卓:如何讓contactlist圖像轉換成適配器

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View view = convertView; 

     if (view == null) { 
      LayoutInflater inflater = (LayoutInflater) (getContext() 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE)); 
      view = inflater.inflate(renderer, null); 
     } 


     TextView text = (TextView) view.findViewById(R.id.name); 
     ImageView photo = (ImageView) view.findViewById(R.id.photo); 
     new LoadImage(photo).execute(); 

我想使用的AsyncTask擺脫手機的照片,我很來襲如何要做到這一點在doinbackground().. PLZ建議如何從接觸的照片,什麼下doinbackground雲()過程

class LoadImage extends AsyncTask<Object, Void, Bitmap>{ 

     private ImageView imv; 


     public LoadImage(ImageView imv) { 
      this.imv = imv; 

     } 



    @Override 
    protected Bitmap doInBackground(Object... params) { 
     Bitmap bitmap = null; 
     photo.setImageBitmap(contact.getPhoto()); 
    } 
    @Override 
    protected void onPostExecute(Bitmap result) { 

     } 
    } 

回答

1

可以使用universalimageloader做到這一點https://github.com/nostra13/Android-Universal-Image-Loader

正如你看到下面的例子,你可以接觸的照片保存到SD購物車,然後把自己的文件路徑的列表,並使用該路徑與通用ImageLoader的,

你可以從https://dl.dropbox.com/u/68130108/UniversalImageLoaderExample.rar

在適配器getView

完整的例子
imageLoader.displayImage(contactFilePath, holder.image, displayImageOptions); 
在活動 公共類ImageListActivity

擴展BaseActivity { adapterContact adapterContact; DisplayImageOptions選項; String [] imageUrls; ArrayList contactList = new ArrayList(); ListView listView; ProgressDialog對話框; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.ac_image_list);

 listView = (ListView) findViewById(android.R.id.list); 

     new asynGetContacts().execute(); 

    } 

    protected class asynGetContacts extends AsyncTask<String, Void, Integer> {  
     protected Integer doInBackground(String... params) { 
      try { 
       ImageListActivity.this.runOnUiThread(new Runnable() { 
        public void run() { 
         dialog = ProgressDialog.show(ImageListActivity.this, "","Lütfen bekleyin...", true); 
         dialog.show(); 
        } 
       }); 
       Uri uri = ContactsContract.Contacts.CONTENT_URI; 
       ContentResolver cr = getContentResolver(); 
       String sortOrder = ContactsContract.Contacts.DISPLAY_NAME 
         + " COLLATE LOCALIZED ASC"; 
       Cursor cur = cr.query(uri, null, null, null, sortOrder); 
       if (cur.getCount() > 0) { 
        String id; 
        String name; 
        while (cur.moveToNext()) { 
         Contact c = new Contact(); 
         id = cur.getString(cur 
           .getColumnIndex(ContactsContract.Contacts._ID)); 
         name = cur 
           .getString(cur 
             .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
         Uri my_contact_Uri = Uri.withAppendedPath(
           ContactsContract.Contacts.CONTENT_URI, 
           String.valueOf(id)); 

         InputStream inputStream = ContactsContract.Contacts 
           .openContactPhotoInputStream(getContentResolver(), 
             my_contact_Uri); 
         BufferedInputStream buf = new BufferedInputStream(inputStream); 
         Bitmap my_btmp = BitmapFactory.decodeStream(buf); 

         if (my_btmp != null) { 
          c.photo = my_btmp; 
          c.id = id; 
          c.name = name; 
          c.photoURL = saveToSD(my_btmp, id); 
          contactList.add(c); 
         } 
        } 
       } 
       cur.close(); 



      } catch (Exception e) { 
       Log.v("hata", e.toString()); 
       return 0; 
      } 

      return 1; 
     } 

     protected void onPostExecute(Integer result) { 
      try { 
       dialog.dismiss(); 
       adapterContact = new AdapterContact(ImageListActivity.this, 0, 
         contactList); 
       listView.setAdapter(adapterContact); 
       listView.setOnScrollListener(new PauseOnScrollListener(false, true)); 
      } catch (Exception e) { 
       Log.v("hata", e.toString()); 
      } 

      super.onPostExecute(result); 
     } 
    } 

    public String saveToSD(Bitmap bmp, String id) { 
     String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ContactImage/"; 

     try { 
      File dir = new File(file_path); 

      if (!dir.exists()) 
       dir.mkdirs(); 

      File f = getFileStreamPath(file_path); 

      if (!f.exists()) { 
       File file = new File(dir, "contact_" + id + ".png"); 
       FileOutputStream fOut = new FileOutputStream(file); 
       bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut); 
       fOut.flush(); 
       fOut.close(); 
      } 


     } catch (Exception e) { 
      Log.v("Hata", e.toString()); 
     } 

     return "file://"+file_path+"contact_" + id + ".png"; 
    } 

}