作业说明:
1.做作业之前首先在封面填上自己的学号和姓名,做完作业后请写上作业完成时间。
2.学习完第5-7单元之后必须完成本次作业,并请在规定时间内通过学习平台提交Word文档形式的电子作业,本次作业占形成性考核总成绩的22%。
作业内容:
学习单元5、6、7中实验部分的项目源文件压缩包。请将源码贴在以下位置,格式为先写文件名后贴代码,如下:
1、
package uk.co.senab.photup.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
import uk.co.senab.bitmapcache.BitmapLruCache;
import uk.co.senab.photup.PhotupApplication;
import uk.co.senab.photup.R;
import uk.co.senab.photup.model.Place;
import uk.co.senab.photup.util.Utils;
import uk.co.senab.photup.views.NetworkedCacheableImageView;
public class PlacesAdapter extends BaseAdapter {
private final List<Place> mItems;
private final Context mContext;
private final LayoutInflater mLayoutInflater;
private final BitmapLruCache mCache;
public PlacesAdapter(Context context, List<Place> items) {
mItems = items;
mContext = context;
mLayoutInflater = LayoutInflater.from(mContext);
mCache = PhotupApplication.getApplication(context).getImageCache();
}
public int getCount() {
return null != mItems ? mItems.size() : 0;
}
public long getItemId(int position) {
return position;
}
public Place getItem(int position) {
return mItems.get(position);
}
public View getView(int position, View view, ViewGroup parent) {
if (null == view) {
view = mLayoutInflater.inflate(R.layout.item_list_places, parent, false);
}
final Place place = getItem(position);
NetworkedCacheableImageView imageView = (NetworkedCacheableImageView) view
.findViewById(R.id.iv_photo);
imageView.loadImage(mCache, place.getAvatarUrl());
TextView mTitle = (TextView) view.findViewById(R.id.tv_place_name);
mTitle.setText(place.getName());
StringBuffer sb = new StringBuffer();
final int distance = place.getDistanceFromLocation();
if (distance > 0) {
sb.append(Utils.formatDistance(distance));
sb.append(” – “);
}
sb.append(place.getCategory());
TextView mDescription = (TextView) view.findViewById(R.id.tv_place_description);
mDescription.setText(sb);
return view;
}
}
2
package uk.co.senab.photup.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.List;
import uk.co.senab.photup.PhotoUploadController;
import uk.co.senab.photup.PhotupApplication;
import uk.co.senab.photup.R;
import uk.co.senab.photup.model.PhotoUpload;
import uk.co.senab.photup.views.PhotoItemLayout;
import uk.co.senab.photup.views.PhotupImageView;
public class SelectedPhotosBaseAdapter extends BaseAdapter {
private List<PhotoUpload> mItems;
private final Context mContext;
private final LayoutInflater mLayoutInflater;
private final PhotoUploadController mController;
private final boolean mShowCheckbox;
public SelectedPhotosBaseAdapter(Context context, boolean showCheckbox) {
mContext = context;
mLayoutInflater = LayoutInflater.from(mContext);
mShowCheckbox = showCheckbox;
PhotupApplication app = PhotupApplication.getApplication(context);
mController = app.getPhotoUploadController();
mItems = mController.getSelected();
}
public int getCount() {
return null != mItems ? mItems.size() : 0;
}
public long getItemId(int position) {
return position;
}
public PhotoUpload getItem(int position) {
return mItems.get(position);
}
public View getView(int position, View view, ViewGroup parent) {
if (null == view) {
view = mLayoutInflater.inflate(R.layout.item_grid_photo_selected, parent, false);
}
PhotoItemLayout layout = (PhotoItemLayout) view;
PhotupImageView iv = layout.getImageView();
final PhotoUpload upload = getItem(position);
iv.requestThumbnail(upload, true);
layout.setShowCaption(true);
layout.setAnimateWhenChecked(false);
layout.setPhotoSelection(upload);
layout.setShowCheckbox(mShowCheckbox);
// If we’re showing the checkbox, then check the background too
if (mShowCheckbox) {
layout.setChecked(true);
}
return view;
}
@Override
public void notifyDataSetChanged() {
mItems = mController.getSelected();
super.notifyDataSetChanged();
}
}
3
package uk.co.senab.photup.adapters;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import java.util.List;
import uk.co.senab.photup.PhotoUploadController;
import uk.co.senab.photup.PhotupApplication;
import uk.co.senab.photup.listeners.OnPickFriendRequestListener;
import uk.co.senab.photup.listeners.OnSingleTapListener;
import uk.co.senab.photup.model.PhotoUpload;
import uk.co.senab.photup.views.MultiTouchImageView;
import uk.co.senab.photup.views.PhotoTagItemLayout;
public class SelectedPhotosViewPagerAdapter extends PagerAdapter {
private final Context mContext;
private final PhotoUploadController mController;
private final OnSingleTapListener mTapListener;
private final OnPickFriendRequestListener mFriendPickRequestListener;
private List<PhotoUpload> mItems;
public SelectedPhotosViewPagerAdapter(Context context, OnSingleTapListener tapListener,
OnPickFriendRequestListener friendRequestListener) {
mContext = context;
mTapListener = tapListener;
mFriendPickRequestListener = friendRequestListener;
PhotupApplication app = PhotupApplication.getApplication(context);
mController = app.getPhotoUploadController();
refreshData();
}
@Override
public void destroyItem(View container, int position, Object object) {
PhotoTagItemLayout view = (PhotoTagItemLayout) object;
MultiTouchImageView imageView = view.getImageView();
imageView.cancelRequest();
((ViewPager) container).removeView(view);
}
@Override
public int getCount() {
return null != mItems ? mItems.size() : 0;
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
public PhotoUpload getItem(int position) {
if (position >= 0 && position < getCount()) {
return mItems.get(position);
}
return null;
}
@Override
public Object instantiateItem(View container, int position) {
PhotoUpload upload = mItems.get(position);
PhotoTagItemLayout view = new PhotoTagItemLayout(mContext, mController, upload,
mFriendPickRequestListener);
view.setPosition(position);
upload.setFaceDetectionListener(view);
MultiTouchImageView imageView = view.getImageView();
imageView.requestFullSize(upload, true, null);
imageView.setSingleTapListener(mTapListener);
((ViewPager) container).addView(view);
return view;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((View) object);
}
@Override
public void notifyDataSetChanged() {
refreshData();
super.notifyDataSetChanged();
}
protected Context getContext() {
return mContext;
}
private void refreshData() {
mItems = mController.getSelected();
}
}
4
package uk.co.senab.photup.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.List;
import uk.co.senab.photup.PhotoUploadController;
import uk.co.senab.photup.PhotupApplication;
import uk.co.senab.photup.R;
import uk.co.senab.photup.model.PhotoUpload;
import uk.co.senab.photup.views.UploadItemLayout;
public class UploadsListBaseAdapter extends BaseAdapter {
private List<PhotoUpload> mItems;
private final Context mContext;
private final LayoutInflater mLayoutInflater;
private final PhotoUploadController mController;
public UploadsListBaseAdapter(Context context) {
mContext = context;
mLayoutInflater = LayoutInflater.from(mContext);
PhotupApplication app = PhotupApplication.getApplication(context);
mController = app.getPhotoUploadController();
mItems = mController.getUploadingUploads();
}
public int getCount() {
return null != mItems ? mItems.size() : 0;
}
public long getItemId(int position) {
return position;
}
public PhotoUpload getItem(int position) {
return mItems.get(position);
}
public View getView(int position, View view, ViewGroup parent) {
if (null == view) {
view = mLayoutInflater.inflate(R.layout.item_list_upload, parent, false);
}
UploadItemLayout layout = (UploadItemLayout) view;
layout.setPhotoSelection(getItem(position));
return view;
}
@Override
public void notifyDataSetChanged() {
mItems = mController.getUploadingUploads();
super.notifyDataSetChanged();
}
}