onip
Neues Mitglied
- 10
hallo zusammen,
ich hänge gerade an der darstellung eines bildes in einem imageview.
ich gehe die kontakte durch und möchte das kontaktbild mit anzeigen.
mein aufbau für meine listview sieht so aus:
ich hab CONTENT_URI und PHOTO_ID daraus mach ich ein string um mir das in der view anzuzeigen.
somit ist mir der pfad zum bild bekannt
meine getView methode bekommt die item_details und verarbeitet diese
// fehler
resolveUri failed on bad bitmap uri: content://com.android.contact/contacts/49/1928
was fang ich mit dem pfad an und stell es in einem imageview dar?
oder kann ich mit
schon was anfangen?
// edit
ok hab was gefunden.
lese die bilder so ein:
das übergebe ich meiner Liste und stell es dann so dar:
ich hänge gerade an der darstellung eines bildes in einem imageview.
ich gehe die kontakte durch und möchte das kontaktbild mit anzeigen.
mein aufbau für meine listview sieht so aus:
Code:
String rowId = "306";
String rowName = "display_name";
String rowHasPhone = "has_phone_nr";
Cursor pCur = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[] { Phone.NUMBER, Phone.TYPE,
Phone.PHOTO_ID },
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { rowId }, null);
pCur.moveToNext();
int rowType = pCur.getInt(pCur
.getColumnIndex(Phone.TYPE));
String rowMobile = pCur.getString(pCur
.getColumnIndex(Phone.NUMBER));
Uri uri = ContentUris.withAppendedId(
ContactsContract.Contacts.CONTENT_URI,
pCur.getLong(_id));
String rowPhotoId = pCur.getString(pCur
.getColumnIndex(Phone.PHOTO_ID));
InputStream is = ContactsContract.Contacts
.openContactPhotoInputStream(this.getContentResolver(), uri);
if (rowPhotoId != null && rowType == Phone.TYPE_MOBILE) {
String imgPath = String.valueOf(uri + "/" + rowPhotoId);
ItemDetails item_details = new ItemDetails();
item_details.setName(rowName);
item_details.setItemDescription("ID: " + rowId);
item_details.setPrice(imgPath);
item_details.setImagePath(imgPath);
listAr.add(item_details);
Log.d(appNam, imgPath);
}
Code:
uri = "content://com.android.contacts/contacts/49";
rowPhotoId = "1928";
String imgPath = String.valueOf(uri + "/" + rowPhotoId);
leider weiß ich noch nicht genau wie man bilder lädt und bräuchte etwas hilfe.content://com.android.contacts/contacts/49/1928
meine getView methode bekommt die item_details und verarbeitet diese
Code:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = l_Inflater.inflate(R.layout.list_view_image_text, null);
holder = new ViewHolder();
holder.txt_itemName = (TextView) convertView
.findViewById(R.id.name);
holder.txt_itemDescription = (TextView) convertView
.findViewById(R.id.cityState);
holder.txt_itemPrice = (TextView) convertView
.findViewById(R.id.phone);
holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txt_itemName
.setText(itemDetailsrrayList.get(position).getName());
holder.txt_itemDescription.setText(itemDetailsrrayList.get(position)
.getItemDescription());
holder.txt_itemPrice.setText(itemDetailsrrayList.get(position)
.getPrice());
// setImageURI macht ne uri daraus
holder.itemImage.setImageURI(itemDetailsrrayList.get(position).getImagePathUri());
return convertView;
}
resolveUri failed on bad bitmap uri: content://com.android.contact/contacts/49/1928
was fang ich mit dem pfad an und stell es in einem imageview dar?
oder kann ich mit
Code:
InputStream is = ContactsContract.Contacts.openContactPhotoInputStream(this.getContentResolver(), uri);
// edit
ok hab was gefunden.
lese die bilder so ein:
Code:
Uri photoUri = ContentUris.withAppendedId(ContactsContract.Data.CONTENT_URI, Long.valueOf(rowPhotoId));
Cursor c = this.getContentResolver().query(photoUri, new String[] {ContactsContract.CommonDataKinds.Photo.PHOTO}, null, null, null);
try
{
if (c.moveToFirst())
photoBytes = c.getBlob(0);
} catch (Exception e) {
e.printStackTrace();
} finally {
c.close();
}
Code:
byte[] bytes = itemDetailsrrayList.get(position).getImageBytes();
if (bytes != null){
holder.itemImage.setImageBitmap(itemDetailsrrayList.get(position).getImageBitmap());
}else {
holder.itemImage.setImageResource(R.drawable.blank_contact);
}
Zuletzt bearbeitet: