Advertisement
Guest User

Untitled

a guest
Jul 5th, 2012
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.21 KB | None | 0 0
  1. package ru.kurganec.vk.messenger.ui.helper.adapters;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.util.Log;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.BaseAdapter;
  10. import android.widget.LinearLayout;
  11. import android.widget.TextView;
  12. import org.json.JSONArray;
  13. import org.json.JSONException;
  14. import org.json.JSONObject;
  15. import ru.kurganec.vk.messenger.R;
  16. import ru.kurganec.vk.messenger.model.ImageDownloader;
  17. import ru.kurganec.vk.messenger.model.classes.VKMessage;
  18. import ru.kurganec.vk.messenger.ui.LocationViewerActivity;
  19. import ru.kurganec.vk.messenger.ui.PhotoViewerActivity;
  20. import ru.kurganec.vk.messenger.ui.VideoViewerActivity;
  21. import ru.kurganec.vk.messenger.ui.helper.VKImageButton;
  22. import ru.kurganec.vk.messenger.utils.TimeUtil;
  23.  
  24. import java.text.SimpleDateFormat;
  25. import java.util.Date;
  26. import java.util.List;
  27.  
  28. /**
  29.  * User: anatoly
  30.  * Date: 20.06.12
  31.  * Time: 1:32
  32.  */
  33. public class HistoryAdapter extends BaseAdapter {
  34.  
  35.     private final LayoutInflater mInflater;
  36.  
  37.     private List<VKMessage> mData;
  38.     private Context mContext;
  39.     //    private HashMap<Long, VKProfile> mCompanionsMap = new HashMap<Long, VKProfile>();
  40.     public HistoryAdapter(Context context, List<VKMessage> data
  41.     ) {
  42.         this.mInflater = LayoutInflater.from(context);
  43.         mContext = context;
  44.         mData = data;
  45.     }
  46.  
  47.  
  48.     @Override
  49.     public int getCount() {
  50.         return mData.size();
  51.     }
  52.  
  53.     @Override
  54.     public Object getItem(int i) {
  55.         return mData.get(i);
  56.     }
  57.  
  58.     @Override
  59.     public long getItemId(int i) {
  60.         return mData.get(i).getUid();
  61.     }
  62.  
  63.     private class DialogHolder {
  64.  
  65.         TextView msg;
  66.         TextView date;
  67.         LinearLayout attachments;
  68.  
  69.         public DialogHolder(View root) {
  70.  
  71.             msg = (TextView) root.findViewById(R.id.text_msg);
  72.             date = (TextView) root.findViewById(R.id.text_date);
  73.             attachments = (LinearLayout) root.findViewById(R.id.list_attach);
  74.  
  75.         }
  76.     }
  77.  
  78.  
  79.  
  80.     @Override
  81.     public View getView(int i, View convertView, ViewGroup viewGroup) {
  82.         DialogHolder holder;
  83.         if (convertView == null) {
  84.  
  85.             if (getItemViewType(i) == VKMessage.OUT) {
  86.                 convertView = mInflater.inflate(R.layout.view_profile_message_out, viewGroup, false);
  87.             } else {
  88.                 convertView = mInflater.inflate(R.layout.view_profile_message_in, viewGroup, false);
  89.             }
  90.             holder = new DialogHolder(convertView);
  91.             convertView.setTag(holder);
  92.         } else {
  93.             holder = (DialogHolder) convertView.getTag();
  94.         }
  95.         bindView(holder, i);
  96.         return convertView;
  97.     }
  98.     //
  99. //
  100.  
  101.  
  102.     @Override
  103.     public int getViewTypeCount() {
  104.         return 2;//0 in , 1-out
  105.     }
  106.  
  107.     @Override
  108.     public int getItemViewType(int position) {
  109.         //тип сообщения (0 – полученное сообщение, 1 – отправленное сообщение). Не передаётся для пересланных сообщений.
  110.         return mData.get(position).getOutState();
  111.     }
  112.  
  113.  
  114.  
  115.     public void bindView(DialogHolder holder, int index) {
  116.         final VKMessage msg = mData.get(index);
  117.  
  118.  
  119.         holder.date.setText(TimeUtil.getTimeLabel(msg.getDate()));
  120.  
  121.         holder.msg.setText(msg.getBody());
  122.  
  123.         holder.msg.setText(msg.getBody());
  124.         holder.attachments.removeAllViews();
  125.         if (msg.getAttachments() != null && msg.getAttachments().length() > 0) {
  126.             holder.attachments.setVisibility(View.VISIBLE);
  127.             try {
  128.                 JSONArray attachments = new JSONArray(msg.getAttachments());
  129.                 for (int i = 0; i < attachments.length(); ++i) {
  130.                     JSONObject attachment = attachments.getJSONObject(i);
  131.                     String type = attachment.getString("type");
  132.                     if (type.equalsIgnoreCase("photo")) {
  133.                         JSONObject photo = attachment.getJSONObject("photo");
  134.                         View photoAttachView = mInflater.inflate(R.layout.view_attached_photo, null);
  135.                         VKImageButton btn = (VKImageButton) photoAttachView.findViewById(R.id.btn);
  136.                         btn.setURI(photo.getString("src_big"));
  137.                         final String uri = photo.getString("src_big");
  138.                         btn.setOnClickListener(new View.OnClickListener() {
  139.                             @Override
  140.                             public void onClick(View view) {
  141.                                 Intent i = new Intent(mContext, PhotoViewerActivity.class);
  142.                                 i.putExtra(PhotoViewerActivity.EXTRA_IMAGE_URI, uri);
  143.                                 mContext.startActivity(i);
  144.                             }
  145.                         });
  146.                         holder.attachments.addView(photoAttachView);
  147.                     } else if (type.equalsIgnoreCase("video")) {
  148.                         final JSONObject video = attachment.getJSONObject("video");
  149.                         View photoAttachView = mInflater.inflate(R.layout.view_attached_photo, null);
  150.                         VKImageButton btn = (VKImageButton) photoAttachView.findViewById(R.id.btn);
  151.                         btn.setOnClickListener(new View.OnClickListener() {
  152.                             @Override
  153.                             public void onClick(View view) {
  154.                                 Intent i = new Intent(mContext, VideoViewerActivity.class);
  155.                                 i.putExtra(VideoViewerActivity.EXTRA_VIDEO, video.toString());
  156.                                 mContext.startActivity(i);
  157.                             }
  158.                         });
  159.                         btn.setURI(video.getString("image_big"));
  160.                         holder.attachments.addView(photoAttachView);
  161.                     } else if (type.equalsIgnoreCase("doc")) {
  162.                         JSONObject doc = attachment.getJSONObject("doc");
  163.                         TextView photoAttachView = (TextView) mInflater.inflate(R.layout.view_attached_doc, null);
  164.                         photoAttachView.setText(doc.getString("title"));
  165.                         holder.attachments.addView(photoAttachView);
  166.                     } else if (type.equalsIgnoreCase("audio")) {
  167.                         JSONObject doc = attachment.getJSONObject("audio");
  168.                         TextView photoAttachView = (TextView) mInflater.inflate(R.layout.view_attached_doc, null);
  169.                         photoAttachView.setText("AUDIOAUDIO.mp3");
  170.                         holder.attachments.addView(photoAttachView);
  171.                     } else {
  172.                         Log.d("VKLOL", "UNSUPPOERTED TYPE: " + type);
  173.                     }
  174.  
  175.                 }
  176.  
  177.             } catch (JSONException e) {
  178.                 e.printStackTrace();//if something went wrong at least we dont crush
  179.                 //we just dont show attachments
  180.                 holder.attachments.removeAllViews();
  181.                 holder.attachments.setVisibility(View.GONE);
  182.             }
  183.         }
  184.         if (msg.getLatitude() != null) {//TODO add надпись о месте тип place
  185.             View photoAttachView = mInflater.inflate(R.layout.view_attached_photo, null);
  186.             VKImageButton btn = (VKImageButton) photoAttachView.findViewById(R.id.btn);
  187.             btn.setURI(ImageDownloader.getMapPreviewUri(msg.getLatitude(), msg.getLongitude(), true));
  188.             btn.setOnClickListener(new View.OnClickListener() {
  189.                 @Override
  190.                 public void onClick(View view) {
  191.                     Intent i = new Intent(mContext, LocationViewerActivity.class);
  192.                     i.putExtra(LocationViewerActivity.EXTRA_LATITUDE, msg.getLatitude());
  193.                     i.putExtra(LocationViewerActivity.EXTRA_LONGITUDE, msg.getLongitude());
  194.                     mContext.startActivity(i);
  195.                 }
  196.             });
  197.             holder.attachments.addView(photoAttachView);
  198.         }
  199.  
  200.     }
  201.  
  202.     public void setData(List<VKMessage> newDialogs) {
  203.         mData = newDialogs;
  204.         notifyDataSetChanged();
  205.     }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement