ppamorim

Untitled

May 10th, 2014
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.27 KB | None | 0 0
  1. package com.fatos.fatos_desconhecidos.app.adapter;
  2.  
  3. import android.content.Context;
  4. import android.os.AsyncTask;
  5. import android.os.Handler;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.BaseAdapter;
  10. import android.widget.ImageButton;
  11. import android.widget.ImageView;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14.  
  15.  
  16. import com.facebook.Session;
  17. import com.facebook.SessionState;
  18. import com.facebook.UiLifecycleHelper;
  19. import com.facebook.widget.FacebookDialog;
  20. import com.fatos.fatos_desconhecidos.app.R;
  21. import com.fatos.fatos_desconhecidos.app.activity.BaseActivity;
  22. import com.fatos.fatos_desconhecidos.app.core.Communicator;
  23. import com.fatos.fatos_desconhecidos.app.core.DialogInterface;
  24. import com.fatos.fatos_desconhecidos.app.core.model.impl.Feed;
  25. import com.fatos.fatos_desconhecidos.app.fragment.FeedFragment;
  26. import com.nostra13.universalimageloader.core.ImageLoader;
  27. import com.parse.FindCallback;
  28. import com.parse.ParseException;
  29. import com.parse.ParseObject;
  30. import com.parse.ParseQuery;
  31.  
  32. import java.util.ArrayList;
  33. import java.util.List;
  34.  
  35. public class FeedAdapter extends BaseAdapter {
  36.  
  37.     ViewHolder mViewHolder;
  38.     private ArrayList<Feed> feedArrayList = new ArrayList<Feed>();
  39.     private Context mContext;
  40.     private List<Feed> mItems;
  41.     private int mCount;
  42.     private boolean isLoading = false;
  43.     private boolean hasNext = false;
  44.     private Feed item;
  45.     private int page = 1;
  46.     private ArrayList<Feed> items;
  47.  
  48.     public FeedAdapter(Context context, List<Feed> items)  {
  49.         mContext = context;
  50.         mItems = items;
  51.         mCount = mItems.size();
  52.     }
  53.  
  54.     public void setData(List<Feed> newData) {
  55.         mItems = newData;
  56.     }
  57.  
  58.     @Override
  59.     public int getCount() {
  60.         return mItems.size();
  61.     }
  62.  
  63.     @Override
  64.     public Feed getItem(int position) {
  65.         return mItems.get(position);
  66.     }
  67.  
  68.     @Override
  69.     public long getItemId(int position) {
  70.         return 0;
  71.     }
  72.  
  73.     @Override
  74.     public View getView(final int position, View convertView, ViewGroup parent) {
  75.  
  76.         if(!isLoading && hasNext && position > getCount() - 10) {
  77.             page++;
  78.             new NewsAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, page);
  79.         }
  80.  
  81.         if(convertView == null) {
  82.  
  83.             convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_feed_item, parent, false);
  84.  
  85.             mViewHolder = new ViewHolder();
  86.             mViewHolder.mTitle = (TextView) convertView.findViewById(R.id.Title);
  87.             mViewHolder.mDescription = (TextView) convertView.findViewById(R.id.Description);
  88.             mViewHolder.mImage = (ImageView) convertView.findViewById(R.id.Image);
  89.             mViewHolder.mShare = (ImageButton) convertView.findViewById(R.id.share_button);
  90.             mViewHolder.mComments = (ImageButton) convertView.findViewById(R.id.comments_button);
  91.             mViewHolder.mLike = (ImageButton) convertView.findViewById(R.id.like_button);
  92.  
  93.             convertView.setTag(mViewHolder);
  94.  
  95.         } else {
  96.             mViewHolder = (ViewHolder) convertView.getTag();
  97.         }
  98.         item = getItem(position);
  99.  
  100. //        Feed feed = new Feed();
  101. //
  102. //        feed.Title = item.getTitle();
  103. //        feed.Description = item.getDescription();
  104. //        feed.ImageURL = item.getImageURL();
  105. //        feed.save();
  106.  
  107.         mViewHolder.mTitle.setText(item.getTitle());
  108.         mViewHolder.mDescription.setText(item.getDescription());
  109.         ImageLoader.getInstance().displayImage(item.getImageURL(),mViewHolder.mImage);
  110.  
  111.         mViewHolder.mTitle.setOnClickListener(onClickButton);
  112.  
  113.         mViewHolder.mDescription.setOnClickListener(onClickButton);
  114.  
  115.         mViewHolder.mImage.setOnClickListener(onClickButton);
  116.  
  117.         mViewHolder.mShare.setOnClickListener(new View.OnClickListener() {
  118.             @Override
  119.             public void onClick(View view) {
  120.                 ((DialogInterface)mContext).openDialog();
  121.                 //dialogInterface.openDialog();
  122.                 Handler handler = new Handler();
  123.                 handler.postDelayed(new Runnable() {
  124.                     public void run() {
  125.                         try{
  126.                             FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder((BaseActivity)mContext)
  127.                                     .setLink(item.getSiteURL())
  128.                                     .build();
  129.  
  130.                             UiLifecycleHelper uiHelper = new UiLifecycleHelper((BaseActivity)mContext, callback);
  131.                             uiHelper.trackPendingDialogCall(shareDialog.present());
  132.                             ((DialogInterface)mContext).closeDialog();
  133.                         } catch (Exception e) {
  134.                             ((DialogInterface)mContext).closeDialog();
  135.                             Toast.makeText(mContext, mContext.getString(R.string.error_share), Toast.LENGTH_LONG).show();
  136.                         }
  137.                     }
  138.                 }, 2000);
  139.  
  140.  
  141.             }
  142.         });
  143.         mViewHolder.mComments.setOnClickListener(new View.OnClickListener() {
  144.             @Override
  145.             public void onClick(View view) {
  146.                 ((Communicator)mContext).onCommentsClick(item.getobjectid());
  147.             }
  148.         });
  149.  
  150.         return convertView;
  151.     }
  152.  
  153.     private View.OnClickListener onClickButton = new View.OnClickListener() {
  154.         @Override
  155.         public void onClick(View view) {
  156.             ((Communicator)mContext).onItemListViewClick(item.getobjectid(), item.getImageURL(), item.getTitle(), item.getCompleteText(), item.getSiteURL());
  157.         }
  158.     };
  159.  
  160.     private Session.StatusCallback callback = new Session.StatusCallback() {
  161.         @Override
  162.         public void call(Session session, SessionState state,Exception exception) { }
  163.     };
  164.  
  165.     private static class ViewHolder {
  166.         private TextView mTitle;
  167.         private TextView mDescription;
  168.         private ImageView mImage;
  169.         private ImageButton mShare;
  170.         private ImageButton mComments;
  171.         private ImageButton mLike;
  172.     }
  173.  
  174.     private class NewsAsyncTask extends AsyncTask<Integer, Void, ArrayList<Feed>> {
  175.         @Override
  176.         protected void onPreExecute() {
  177.             super.onPreExecute();
  178.             isLoading = true;
  179.         }
  180.  
  181.         @Override
  182.         protected ArrayList<Feed> doInBackground(Integer... integers) {
  183.             ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
  184.             query.orderByDescending("createdAt");
  185. //            if(mFilter != null) {
  186. //                query.whereContains("Type", mFilter);
  187. //            }
  188.             query.setLimit(10);
  189.             query.setSkip(page = page + 10);
  190.             query.findInBackground(new FindCallback<ParseObject>() {
  191.                 @Override
  192.                 public void done(List<ParseObject> responseList, ParseException e) {
  193.                     if (e == null) {
  194.                         for(int i = 0; i < responseList.size(); i++) {
  195.                             items.add(new Feed(responseList.get(i).getObjectId(),
  196.                                     responseList.get(i).getString("Title"),
  197.                                     responseList.get(i).getString("Description"),
  198.                                     responseList.get(i).getString("CompleteText"),
  199.                                     responseList.get(i).getString("imageURL"),
  200.                                     responseList.get(i).getString("Link_on_Site")));
  201.                         }
  202.                     }
  203.                 }
  204.             });
  205.             return items;
  206.         }
  207.  
  208.         @Override
  209.         protected void onPostExecute(ArrayList<Feed> newsPaginatedArrayList) {
  210.             super.onPostExecute(newsPaginatedArrayList);
  211.             hasNext = false;
  212.  
  213.             if (newsPaginatedArrayList != null && newsPaginatedArrayList.getItems() != null) {
  214.                 feedArrayList.addAll(newsPaginatedArrayList.getItems());
  215.                 hasNext = newsPaginatedArrayList.hasNext();
  216.                 notifyDataSetChanged();
  217.             }
  218.  
  219.             if (!hasNext)
  220.                 //footerView.setVisibility(View.GONE); TODO: Need construct the view
  221.  
  222.             isLoading = false;
  223.         }
  224.     }
  225.  
  226. }
Advertisement
Add Comment
Please, Sign In to add comment