more speed optimizations

This commit is contained in:
Daniel Gultsch 2014-02-19 08:21:33 +01:00
parent 746f959155
commit 94ab61d5c0
1 changed files with 29 additions and 25 deletions

View File

@ -157,18 +157,14 @@ public class ConversationFragment extends Fragment {
int type = getItemViewType(position);
ViewHolder viewHolder;
if (view == null) {
viewHolder = new ViewHolder();
switch (type) {
case SENT:
viewHolder = new ViewHolder();
view = (View) inflater.inflate(R.layout.message_sent,
null);
viewHolder.imageView = (ImageView) view
.findViewById(R.id.message_photo);
viewHolder.messageBody = (TextView) view
.findViewById(R.id.message_body);
viewHolder.time = (TextView) view
.findViewById(R.id.message_time);
view.setTag(viewHolder);
viewHolder.imageView.setImageBitmap(selfBitmap);
break;
case RECIEVED:
viewHolder = new ViewHolder();
@ -176,36 +172,43 @@ public class ConversationFragment extends Fragment {
R.layout.message_recieved, null);
viewHolder.imageView = (ImageView) view
.findViewById(R.id.message_photo);
viewHolder.messageBody = (TextView) view
.findViewById(R.id.message_body);
viewHolder.time = (TextView) view
.findViewById(R.id.message_time);
view.setTag(viewHolder);
if (item.getConversation().getMode() == Conversation.MODE_SINGLE) {
Uri uri = item.getConversation().getProfilePhotoUri();
if (uri != null) {
viewHolder.imageView
.setImageBitmap(mBitmapCache.get(item
.getConversation().getName(), uri));
} else {
viewHolder.imageView
.setImageBitmap(mBitmapCache.get(item
.getConversation().getName(), null));
}
}
break;
default:
viewHolder = null;
break;
}
viewHolder.messageBody = (TextView) view
.findViewById(R.id.message_body);
viewHolder.time = (TextView) view
.findViewById(R.id.message_time);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
if (type == RECIEVED) {
if (item.getConversation().getMode() == Conversation.MODE_SINGLE) {
Uri uri = item.getConversation().getProfilePhotoUri();
if (uri != null) {
viewHolder.imageView.setImageBitmap(mBitmapCache.get(item.getConversation().getName(), uri));
} else {
viewHolder.imageView.setImageBitmap(mBitmapCache.get(item.getConversation().getName(),null));
}
} else if (item.getConversation().getMode() == Conversation.MODE_MULTI) {
if (item.getConversation().getMode() == Conversation.MODE_MULTI) {
if (item.getCounterpart() != null) {
viewHolder.imageView.setImageBitmap(mBitmapCache.get(item.getCounterpart(),null));
viewHolder.imageView.setImageBitmap(mBitmapCache
.get(item.getCounterpart(), null));
} else {
viewHolder.imageView.setImageBitmap(mBitmapCache.get(item.getConversation().getName(),null));
viewHolder.imageView
.setImageBitmap(mBitmapCache.get(item
.getConversation().getName(), null));
}
}
} else {
viewHolder.imageView.setImageBitmap(selfBitmap);
}
String body = item.getBody();
if (body != null) {
@ -406,15 +409,16 @@ public class ConversationFragment extends Fragment {
protected ImageView imageView;
}
private class BitmapCache {
private HashMap<String, Bitmap> bitmaps = new HashMap<String, Bitmap>();
public Bitmap get(String name, Uri uri) {
if (bitmaps.containsKey(name)) {
return bitmaps.get(name);
} else {
Bitmap bm;
if (uri!=null) {
if (uri != null) {
try {
bm = BitmapFactory.decodeStream(getActivity()
.getContentResolver().openInputStream(uri));