@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = newView(mContext, mCursor, parent);
} else {
view = convertView;
}
notifyDataSetChanged();
bindView(view, mContext, mCursor);
return view;
}@Override
public void bindView(View view, Context context, Cursor cursor) {
cursor.moveToNext();
ViewHolder viewholder = (ViewHolder) view.getTag();
viewholder.name.setText(cursor.getString(PHONES_DISPLAY_NAME_INDEX) + "");
viewholder.number.setText(cursor.getString(PHONES_NUMBER_INDEX) + "");
Long contactid = cursor.getLong(PHONES_CONTACT_ID_INDEX);
Long photoid = cursor.getLong(PHONES_PHOTO_ID_INDEX);
Bitmap contactPhoto;
if (photoid > 0) {
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactid);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(mContext.getContentResolver(), uri);
contactPhoto = BitmapFactory.decodeStream(input);
} else {
contactPhoto = BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher);
}
viewholder.ivHead.setImageBitmap(contactPhoto);
}在新创建的activity中修改数据后返回listview 显示的是两个相同的item 发现数据改变时调用bindview调用的Cursor还是指向最后一行 如何修改