Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.fatos.fatos_desconhecidos.app.adapter;
- import android.content.Context;
- import android.os.AsyncTask;
- import android.os.Handler;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.ImageButton;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.facebook.Session;
- import com.facebook.SessionState;
- import com.facebook.UiLifecycleHelper;
- import com.facebook.widget.FacebookDialog;
- import com.fatos.fatos_desconhecidos.app.R;
- import com.fatos.fatos_desconhecidos.app.activity.BaseActivity;
- import com.fatos.fatos_desconhecidos.app.core.Communicator;
- import com.fatos.fatos_desconhecidos.app.core.DialogInterface;
- import com.fatos.fatos_desconhecidos.app.core.model.impl.Feed;
- import com.nostra13.universalimageloader.core.ImageLoader;
- import com.parse.ParseException;
- import com.parse.ParseObject;
- import com.parse.ParseQuery;
- import java.util.ArrayList;
- import java.util.List;
- import uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout;
- public class FeedAdapter extends BaseAdapter {
- ViewHolder mViewHolder;
- private Context mContext;
- private List<Feed> mItems = new ArrayList<Feed>();
- private boolean isLoading;
- private boolean hasNext = false;
- private int page = 0;
- private int displayLimit = 5;
- private NewsAsyncTask asyncTask = null;
- private PullToRefreshLayout pullToRefresh = null;
- List<ParseObject> responseList = null;//esse!
- public FeedAdapter(Context context, LinearLayout relativeLayout) {
- mContext = context;
- asyncTask = new NewsAsyncTask();
- asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, page);
- }
- public PullToRefreshLayout getPullToRefresh() {
- return pullToRefresh;
- }
- public void setPullToRefresh(PullToRefreshLayout pullToRefresh) {
- this.pullToRefresh = pullToRefresh;
- }
- @Override
- public int getCount() {
- return mItems.size();
- }
- @Override
- public Feed getItem(int position) {
- return mItems.get(position);
- }
- @Override
- public long getItemId(int position) {
- //Feed feed = mItems.get(position);
- return position;//feed.getId();
- }
- @Override
- public View getView(final int position, View convertView, ViewGroup parent) {
- if (!isLoading && hasNext && position > getCount() - 5) {
- page++;
- asyncTask = new NewsAsyncTask();
- asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, page);
- }
- if (convertView == null) {
- convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_feed_item, parent, false);
- mViewHolder = new ViewHolder();
- mViewHolder.mTitle = (TextView) convertView.findViewById(R.id.Title);
- mViewHolder.mDescription = (TextView) convertView.findViewById(R.id.Description);
- mViewHolder.mImage = (ImageView) convertView.findViewById(R.id.Image);
- mViewHolder.mShare = (ImageButton) convertView.findViewById(R.id.share_button);
- mViewHolder.mComments = (ImageButton) convertView.findViewById(R.id.comments_button);
- mViewHolder.mLike = (ImageButton) convertView.findViewById(R.id.like_button);
- convertView.setTag(mViewHolder);
- } else {
- mViewHolder = (ViewHolder) convertView.getTag();
- }
- final Feed item = getItem(position);
- mViewHolder.mTitle.setText(item.getTitle());
- mViewHolder.mDescription.setText(item.getDescription());
- ImageLoader.getInstance().displayImage(item.getImageURL(), mViewHolder.mImage);
- View.OnClickListener onClickButton = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Feed item = getItem((Integer) view.getTag());
- ((Communicator) mContext).onItemListViewClick(item.getobjectid(), item.getImageURL(), item.getTitle(), item.getCompleteText(), item.getSiteURL());
- }
- };
- mViewHolder.mTitle.setTag(new Integer(position));
- mViewHolder.mDescription.setTag(new Integer(position));
- mViewHolder.mImage.setTag(new Integer(position));
- mViewHolder.mTitle.setOnClickListener(onClickButton);
- mViewHolder.mDescription.setOnClickListener(onClickButton);
- mViewHolder.mImage.setOnClickListener(onClickButton);
- mViewHolder.mShare.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ((DialogInterface) mContext).openDialog();
- //dialogInterface.openDialog();
- Handler handler = new Handler();
- handler.postDelayed(new Runnable() {
- public void run() {
- try {
- FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder((BaseActivity) mContext)
- .setLink(item.getSiteURL())
- .build();
- UiLifecycleHelper uiHelper = new UiLifecycleHelper((BaseActivity) mContext, callback);
- uiHelper.trackPendingDialogCall(shareDialog.present());
- ((DialogInterface) mContext).closeDialog();
- } catch (Exception e) {
- ((DialogInterface) mContext).closeDialog();
- Toast.makeText(mContext, mContext.getString(R.string.error_share), Toast.LENGTH_LONG).show();
- }
- }
- }, 2000); //Safe delay
- }
- });
- mViewHolder.mComments.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ((Communicator) mContext).onCommentsClick(item.getobjectid());
- }
- });
- return convertView;
- }
- public void forceReload() {
- page = 0;
- if (isLoading)
- asyncTask.cancel(true);
- asyncTask = new NewsAsyncTask();
- asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, page);
- }
- private Session.StatusCallback callback = new Session.StatusCallback() {
- @Override
- public void call(Session session, SessionState state, Exception exception) {
- }
- };
- private static class ViewHolder {
- private TextView mTitle;
- private TextView mDescription;
- private ImageView mImage;
- private ImageButton mShare;
- private ImageButton mComments;
- private ImageButton mLike;
- }
- private class NewsAsyncTask extends AsyncTask<Integer, Void, ArrayList<Feed>> {
- private int page = 0;
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- isLoading = true;
- }
- @Override
- protected ArrayList<Feed> doInBackground(Integer... integers) {
- page = integers[0];
- ArrayList<Feed> backgroundItems = new ArrayList<Feed>();
- ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
- query.orderByDescending("createdAt");
- // if(mFilter != null) {
- // query.whereContains("Type", mFilter);
- // }
- query.setLimit(displayLimit);//Aqui o limite da 5
- query.setSkip(page * displayLimit);
- try {
- responseList = query.find();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- for (int i = 0; i < responseList.size(); i++) {
- ParseObject parseObject = responseList.get(i);
- backgroundItems.add(new Feed(parseObject.getObjectId(),
- parseObject.getString("Title"),
- parseObject.getString("Description"),
- parseObject.getString("CompleteText"),
- parseObject.getString("imageURL"),
- parseObject.getString("Link_on_Site")));
- }
- return backgroundItems;
- }
- @Override
- protected void onPostExecute(ArrayList<Feed> newsPaginatedArrayList) {
- super.onPostExecute(newsPaginatedArrayList);
- if (isCancelled()) {
- isLoading = false;
- return;
- }
- hasNext = false;
- if (page == 0) {
- mItems.clear();
- notifyDataSetInvalidated();
- }
- if (newsPaginatedArrayList != null && newsPaginatedArrayList.size() != 0) {
- mItems.addAll(newsPaginatedArrayList);
- hasNext = true;
- notifyDataSetChanged();
- }
- if (!hasNext) {
- //mRelativeLayout.setVisibility(View.GONE);
- }
- if (getPullToRefresh() != null)
- getPullToRefresh().setRefreshComplete();
- isLoading = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment