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.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.fatos.fatos_desconhecidos.app.fragment.FeedFragment;
- import com.nostra13.universalimageloader.core.ImageLoader;
- import com.parse.FindCallback;
- import com.parse.ParseException;
- import com.parse.ParseObject;
- import com.parse.ParseQuery;
- import java.util.ArrayList;
- import java.util.List;
- public class FeedAdapter extends BaseAdapter {
- ViewHolder mViewHolder;
- private ArrayList<Feed> feedArrayList = new ArrayList<Feed>();
- private Context mContext;
- private List<Feed> mItems;
- private int mCount;
- private boolean isLoading = false;
- private boolean hasNext = false;
- private Feed item;
- private int page = 1;
- private ArrayList<Feed> items;
- public FeedAdapter(Context context, List<Feed> items) {
- mContext = context;
- mItems = items;
- mCount = mItems.size();
- }
- public void setData(List<Feed> newData) {
- mItems = newData;
- }
- @Override
- public int getCount() {
- return mItems.size();
- }
- @Override
- public Feed getItem(int position) {
- return mItems.get(position);
- }
- @Override
- public long getItemId(int position) {
- return 0;
- }
- @Override
- public View getView(final int position, View convertView, ViewGroup parent) {
- if(!isLoading && hasNext && position > getCount() - 10) {
- page++;
- new NewsAsyncTask().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();
- }
- item = getItem(position);
- // Feed feed = new Feed();
- //
- // feed.Title = item.getTitle();
- // feed.Description = item.getDescription();
- // feed.ImageURL = item.getImageURL();
- // feed.save();
- mViewHolder.mTitle.setText(item.getTitle());
- mViewHolder.mDescription.setText(item.getDescription());
- ImageLoader.getInstance().displayImage(item.getImageURL(),mViewHolder.mImage);
- 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);
- }
- });
- mViewHolder.mComments.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ((Communicator)mContext).onCommentsClick(item.getobjectid());
- }
- });
- return convertView;
- }
- private View.OnClickListener onClickButton = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ((Communicator)mContext).onItemListViewClick(item.getobjectid(), item.getImageURL(), item.getTitle(), item.getCompleteText(), item.getSiteURL());
- }
- };
- 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>> {
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- isLoading = true;
- }
- @Override
- protected ArrayList<Feed> doInBackground(Integer... integers) {
- ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
- query.orderByDescending("createdAt");
- // if(mFilter != null) {
- // query.whereContains("Type", mFilter);
- // }
- query.setLimit(10);
- query.setSkip(page = page + 10);
- query.findInBackground(new FindCallback<ParseObject>() {
- @Override
- public void done(List<ParseObject> responseList, ParseException e) {
- if (e == null) {
- for(int i = 0; i < responseList.size(); i++) {
- items.add(new Feed(responseList.get(i).getObjectId(),
- responseList.get(i).getString("Title"),
- responseList.get(i).getString("Description"),
- responseList.get(i).getString("CompleteText"),
- responseList.get(i).getString("imageURL"),
- responseList.get(i).getString("Link_on_Site")));
- }
- }
- }
- });
- return items;
- }
- @Override
- protected void onPostExecute(ArrayList<Feed> newsPaginatedArrayList) {
- super.onPostExecute(newsPaginatedArrayList);
- hasNext = false;
- if (newsPaginatedArrayList != null && newsPaginatedArrayList.getItems() != null) {
- feedArrayList.addAll(newsPaginatedArrayList.getItems());
- hasNext = newsPaginatedArrayList.hasNext();
- notifyDataSetChanged();
- }
- if (!hasNext)
- //footerView.setVisibility(View.GONE); TODO: Need construct the view
- isLoading = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment