Created
August 16, 2014 11:23
-
-
Save SehoNoh/a05603f77b408820cc64 to your computer and use it in GitHub Desktop.
ListView ViewPager
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.artsquare.android.ui; | |
import android.app.Activity; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.graphics.Bitmap; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.ArrayAdapter; | |
import android.widget.ImageView; | |
import android.widget.TextView; | |
import com.artsquare.android.R; | |
import com.artsquare.android.common.UserSession; | |
import com.artsquare.android.model.PhotoModel; | |
import com.artsquare.android.util.NewsfeedCallBack; | |
import com.nostra13.universalimageloader.core.DisplayImageOptions; | |
import com.nostra13.universalimageloader.core.ImageLoader; | |
import com.nostra13.universalimageloader.core.assist.FailReason; | |
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; | |
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; | |
import java.util.ArrayList; | |
public class NewsfeedAdapter extends ArrayAdapter<PhotoModel> implements NewsfeedCallBack { | |
private Activity activity; | |
private Context context; | |
private int adapterViewItemId; | |
private ArrayList<PhotoModel> items; | |
private DisplayImageOptions profileOptions, artOptions; | |
private ImageLoader loader = ImageLoader.getInstance(); | |
// private SparseArray<WeakReference<View>> viewArray; | |
@Override | |
public void itemClicked(final int index, final int position) { | |
long idx = items.get(index).getIdx(); | |
UserSession.getInstance().setCurrentIndex(idx); | |
UserSession.getInstance().setCurrentPosition(position); | |
getContext().startActivity(new Intent(activity, DetailViewActivity.class)); | |
} | |
public NewsfeedAdapter(Activity activity, int adapterViewItemId, ArrayList<PhotoModel> items) { | |
super(activity, adapterViewItemId, items); | |
this.context = activity; | |
this.activity = activity; | |
this.adapterViewItemId = adapterViewItemId; | |
this.items = items; | |
// this.viewArray = new SparseArray<WeakReference<View>>(items.size()); | |
profileOptions = new DisplayImageOptions.Builder() | |
// .showImageOnLoading(R.drawable.ic_stub) | |
// .showImageForEmptyUri(R.drawable.ic_empty) | |
// .showImageOnFail(R.drawable.ic_error) | |
.cacheInMemory(true) | |
.cacheOnDisk(true) | |
.considerExifParams(true) | |
.displayer(new RoundedBitmapDisplayer(100)) | |
.build(); | |
artOptions = new DisplayImageOptions.Builder() | |
// .showImageOnLoading(R.drawable.ic_stub) | |
// .showImageForEmptyUri(R.drawable.ic_empty) | |
// .showImageOnFail(R.drawable.ic_error) | |
.cacheInMemory(true) | |
.cacheOnDisk(true) | |
.considerExifParams(true) | |
.build(); | |
} | |
@Override | |
public View getView(int position, View convertView, ViewGroup parent) { | |
View root = convertView; | |
final ViewHolder holder; | |
final PhotoModel data = items.get(position); | |
if (root == null) { | |
root = LayoutInflater.from(context).inflate(adapterViewItemId, parent, false); | |
holder = new ViewHolder(); | |
holder.ivProfile = (ImageView) root.findViewById(R.id.newsfeed_list_item_iv_profile); | |
holder.fixedViewPager = (FixedViewPager) root.findViewById(R.id.newsfeed_list_pager); | |
holder.tvName = (TextView) root.findViewById(R.id.newsfeed_list_item_tv_name); | |
holder.tvHeart = (TextView) root.findViewById(R.id.newsfeed_list_item_tv_heart); | |
holder.tvComments = (TextView) root.findViewById(R.id.newsfeed_list_item_tv_comments); | |
root.setTag(holder); | |
} else { | |
holder = (ViewHolder) root.getTag(); | |
} | |
if (data != null) { | |
if (holder.ivProfile != null) { | |
loader.displayImage(data.getOwnerImg(), holder.ivProfile, | |
profileOptions, new ImageLoadingListener() { | |
@Override | |
public void onLoadingStarted(String s, View view) { | |
} | |
@Override | |
public void onLoadingFailed(String s, View view, FailReason failReason) { | |
} | |
@Override | |
public void onLoadingComplete(String s, View view, Bitmap bitmap) { | |
} | |
@Override | |
public void onLoadingCancelled(String s, View view) { | |
} | |
} | |
); | |
} | |
if (holder.fixedViewPager != null) { | |
holder.fixedViewPager.setPageMargin(context.getResources().getDimensionPixelOffset(R.dimen.test)); | |
holder.fixedViewPager.setAdapter(new NewsfeedPagerAdapter(getContext(), data.getPhotos(), this, position)); | |
holder.fixedViewPager.requestDisallowInterceptTouchEvent(false); | |
holder.fixedViewPager.setOffscreenPageLimit(items.size()); | |
} | |
// if (holder.viewPager != null) { | |
// holder.viewPager.setItems(data.getPhotos()); | |
// } | |
// if (holder.ivContent != null) { | |
// ImageLoader.getInstance().displayImage(data.getPhotos().get(0), holder.ivContent, artOptions, | |
// new ImageLoadingListener() { | |
// @Override | |
// public void onLoadingStarted(String s, View view) { | |
// holder.progressBar.setVisibility(View.VISIBLE); | |
// } | |
// | |
// @Override | |
// public void onLoadingFailed(String s, View view, FailReason failReason) { | |
// holder.progressBar.setVisibility(View.GONE); | |
// } | |
// | |
// @Override | |
// public void onLoadingComplete(String s, View view, Bitmap bitmap) { | |
// holder.progressBar.setVisibility(View.GONE); | |
// } | |
// | |
// @Override | |
// public void onLoadingCancelled(String s, View view) { | |
// holder.progressBar.setVisibility(View.GONE); | |
// } | |
// } | |
// ); | |
// } | |
if (holder.tvName != null) { | |
holder.tvName.setText(data.getOwnerName()); | |
} | |
if (holder.tvComments != null) { | |
holder.tvComments.setText(String.valueOf(data.getCommentCnt())); | |
} | |
} | |
// if (viewArray != null && viewArray.get(position) != null) { | |
// root = viewArray.get(position).get(); | |
// if (root != null) | |
// return root; | |
// } | |
try { | |
ImageView logoView = (ImageView) root.findViewById(R.id.newsfeed_list_item_iv_profile); | |
loader.displayImage(data.getOwnerImg(), holder.ivProfile, | |
profileOptions, new ImageLoadingListener() { | |
@Override | |
public void onLoadingStarted(String s, View view) { | |
} | |
@Override | |
public void onLoadingFailed(String s, View view, FailReason failReason) { | |
} | |
@Override | |
public void onLoadingComplete(String s, View view, Bitmap bitmap) { | |
} | |
@Override | |
public void onLoadingCancelled(String s, View view) { | |
} | |
} | |
); | |
} finally { | |
// viewArray.put(position, new WeakReference<View>(root)); | |
} | |
return root; | |
} | |
@Override | |
public void notifyDataSetChanged() { | |
super.notifyDataSetChanged(); | |
} | |
public void update() { | |
// viewArray.clear(); | |
notifyDataSetChanged(); | |
} | |
private static class ViewHolder { | |
ImageView ivProfile; | |
// ImageView ivContent; | |
TextView tvName; | |
// ProgressBar progressBar; | |
// NewsfeedViewPager viewPager; | |
FixedViewPager fixedViewPager; | |
TextView tvHeart; | |
TextView tvComments; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.artsquare.android.ui; | |
import android.content.Context; | |
import android.graphics.Bitmap; | |
import android.support.v4.view.PagerAdapter; | |
import android.util.Log; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.ImageView; | |
import android.widget.LinearLayout; | |
import android.widget.ProgressBar; | |
import com.artsquare.android.R; | |
import com.artsquare.android.util.NewsfeedCallBack; | |
import com.nostra13.universalimageloader.core.ImageLoader; | |
import com.nostra13.universalimageloader.core.assist.FailReason; | |
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; | |
import java.util.ArrayList; | |
public class NewsfeedPagerAdapter extends PagerAdapter { | |
private final static String TAG = NewsfeedViewPager.class.getSimpleName(); | |
private Context context; | |
private ArrayList<String> urls; | |
private NewsfeedCallBack callBack; | |
private int idx; | |
public NewsfeedPagerAdapter(Context context, ArrayList<String> urls, NewsfeedCallBack callBack, int idx) { | |
this.context = context; | |
this.urls = urls; | |
this.callBack = callBack; | |
this.idx = idx; | |
} | |
@Override | |
public void destroyItem(ViewGroup container, int position, Object object) { | |
container.removeView((View) object); | |
} | |
@Override | |
public int getCount() { | |
return urls.size(); | |
} | |
@Override | |
public Object instantiateItem(ViewGroup container, final int position) { | |
LayoutInflater inflater = LayoutInflater.from(context); | |
final View root = inflater.inflate(R.layout.newsfeed_viewpager_item, container, false); | |
final ImageView imageView = (ImageView) root.findViewById(R.id.pager_iv); | |
final LinearLayout progressLayout = (LinearLayout) root.findViewById(R.id.loading_progress_layout); | |
final ProgressBar progressBar = (ProgressBar) root.findViewById(R.id.loading_progress_bar); | |
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); | |
ImageLoader.getInstance().displayImage(urls.get(position), imageView, new ImageLoadingListener() { | |
@Override | |
public void onLoadingStarted(String s, View view) { | |
progressLayout.setVisibility(View.VISIBLE); | |
progressBar.setVisibility(View.VISIBLE); | |
} | |
@Override | |
public void onLoadingFailed(String s, View view, FailReason failReason) { | |
progressLayout.setVisibility(View.GONE); | |
progressBar.setVisibility(View.GONE); | |
} | |
@Override | |
public void onLoadingComplete(String s, View view, Bitmap bitmap) { | |
progressLayout.setVisibility(View.GONE); | |
progressBar.setVisibility(View.GONE); | |
} | |
@Override | |
public void onLoadingCancelled(String s, View view) { | |
progressLayout.setVisibility(View.GONE); | |
progressBar.setVisibility(View.GONE); | |
} | |
}); | |
container.addView(root, 0); | |
root.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
Log.i(TAG, "Index : " + idx); | |
callBack.itemClicked(idx, position); | |
} | |
}); | |
return root; | |
} | |
@Override | |
public boolean isViewFromObject(View view, Object o) { | |
return view.equals(o); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment