Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.kurganec.vk.messenger.ui.helper.adapters;
- import android.content.Context;
- import android.content.Intent;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import ru.kurganec.vk.messenger.R;
- import ru.kurganec.vk.messenger.model.ImageDownloader;
- import ru.kurganec.vk.messenger.model.classes.VKMessage;
- import ru.kurganec.vk.messenger.ui.LocationViewerActivity;
- import ru.kurganec.vk.messenger.ui.PhotoViewerActivity;
- import ru.kurganec.vk.messenger.ui.VideoViewerActivity;
- import ru.kurganec.vk.messenger.ui.helper.VKImageButton;
- import ru.kurganec.vk.messenger.utils.TimeUtil;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
- /**
- * User: anatoly
- * Date: 20.06.12
- * Time: 1:32
- */
- public class HistoryAdapter extends BaseAdapter {
- private final LayoutInflater mInflater;
- private List<VKMessage> mData;
- private Context mContext;
- // private HashMap<Long, VKProfile> mCompanionsMap = new HashMap<Long, VKProfile>();
- public HistoryAdapter(Context context, List<VKMessage> data
- ) {
- this.mInflater = LayoutInflater.from(context);
- mContext = context;
- mData = data;
- }
- @Override
- public int getCount() {
- return mData.size();
- }
- @Override
- public Object getItem(int i) {
- return mData.get(i);
- }
- @Override
- public long getItemId(int i) {
- return mData.get(i).getUid();
- }
- private class DialogHolder {
- TextView msg;
- TextView date;
- LinearLayout attachments;
- public DialogHolder(View root) {
- msg = (TextView) root.findViewById(R.id.text_msg);
- date = (TextView) root.findViewById(R.id.text_date);
- attachments = (LinearLayout) root.findViewById(R.id.list_attach);
- }
- }
- @Override
- public View getView(int i, View convertView, ViewGroup viewGroup) {
- DialogHolder holder;
- if (convertView == null) {
- if (getItemViewType(i) == VKMessage.OUT) {
- convertView = mInflater.inflate(R.layout.view_profile_message_out, viewGroup, false);
- } else {
- convertView = mInflater.inflate(R.layout.view_profile_message_in, viewGroup, false);
- }
- holder = new DialogHolder(convertView);
- convertView.setTag(holder);
- } else {
- holder = (DialogHolder) convertView.getTag();
- }
- bindView(holder, i);
- return convertView;
- }
- //
- //
- @Override
- public int getViewTypeCount() {
- return 2;//0 in , 1-out
- }
- @Override
- public int getItemViewType(int position) {
- //тип сообщения (0 – полученное сообщение, 1 – отправленное сообщение). Не передаётся для пересланных сообщений.
- return mData.get(position).getOutState();
- }
- public void bindView(DialogHolder holder, int index) {
- final VKMessage msg = mData.get(index);
- holder.date.setText(TimeUtil.getTimeLabel(msg.getDate()));
- holder.msg.setText(msg.getBody());
- holder.msg.setText(msg.getBody());
- holder.attachments.removeAllViews();
- if (msg.getAttachments() != null && msg.getAttachments().length() > 0) {
- holder.attachments.setVisibility(View.VISIBLE);
- try {
- JSONArray attachments = new JSONArray(msg.getAttachments());
- for (int i = 0; i < attachments.length(); ++i) {
- JSONObject attachment = attachments.getJSONObject(i);
- String type = attachment.getString("type");
- if (type.equalsIgnoreCase("photo")) {
- JSONObject photo = attachment.getJSONObject("photo");
- View photoAttachView = mInflater.inflate(R.layout.view_attached_photo, null);
- VKImageButton btn = (VKImageButton) photoAttachView.findViewById(R.id.btn);
- btn.setURI(photo.getString("src_big"));
- final String uri = photo.getString("src_big");
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent i = new Intent(mContext, PhotoViewerActivity.class);
- i.putExtra(PhotoViewerActivity.EXTRA_IMAGE_URI, uri);
- mContext.startActivity(i);
- }
- });
- holder.attachments.addView(photoAttachView);
- } else if (type.equalsIgnoreCase("video")) {
- final JSONObject video = attachment.getJSONObject("video");
- View photoAttachView = mInflater.inflate(R.layout.view_attached_photo, null);
- VKImageButton btn = (VKImageButton) photoAttachView.findViewById(R.id.btn);
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent i = new Intent(mContext, VideoViewerActivity.class);
- i.putExtra(VideoViewerActivity.EXTRA_VIDEO, video.toString());
- mContext.startActivity(i);
- }
- });
- btn.setURI(video.getString("image_big"));
- holder.attachments.addView(photoAttachView);
- } else if (type.equalsIgnoreCase("doc")) {
- JSONObject doc = attachment.getJSONObject("doc");
- TextView photoAttachView = (TextView) mInflater.inflate(R.layout.view_attached_doc, null);
- photoAttachView.setText(doc.getString("title"));
- holder.attachments.addView(photoAttachView);
- } else if (type.equalsIgnoreCase("audio")) {
- JSONObject doc = attachment.getJSONObject("audio");
- TextView photoAttachView = (TextView) mInflater.inflate(R.layout.view_attached_doc, null);
- photoAttachView.setText("AUDIOAUDIO.mp3");
- holder.attachments.addView(photoAttachView);
- } else {
- Log.d("VKLOL", "UNSUPPOERTED TYPE: " + type);
- }
- }
- } catch (JSONException e) {
- e.printStackTrace();//if something went wrong at least we dont crush
- //we just dont show attachments
- holder.attachments.removeAllViews();
- holder.attachments.setVisibility(View.GONE);
- }
- }
- if (msg.getLatitude() != null) {//TODO add надпись о месте тип place
- View photoAttachView = mInflater.inflate(R.layout.view_attached_photo, null);
- VKImageButton btn = (VKImageButton) photoAttachView.findViewById(R.id.btn);
- btn.setURI(ImageDownloader.getMapPreviewUri(msg.getLatitude(), msg.getLongitude(), true));
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent i = new Intent(mContext, LocationViewerActivity.class);
- i.putExtra(LocationViewerActivity.EXTRA_LATITUDE, msg.getLatitude());
- i.putExtra(LocationViewerActivity.EXTRA_LONGITUDE, msg.getLongitude());
- mContext.startActivity(i);
- }
- });
- holder.attachments.addView(photoAttachView);
- }
- }
- public void setData(List<VKMessage> newDialogs) {
- mData = newDialogs;
- notifyDataSetChanged();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement