package com.example.fei.yhb_20.ui.fragment;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.CardView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bmob.BmobProFile;
import com.bmob.btp.callback.ThumbnailListener;
import com.example.fei.yhb_20.R;
import com.example.fei.yhb_20.bean.BaseUser;
import com.example.fei.yhb_20.bean.Comment;
import com.example.fei.yhb_20.bean.Merchant;
import com.example.fei.yhb_20.bean.Post;
import com.example.fei.yhb_20.ui.DeatilActivity;
import com.example.fei.yhb_20.ui.GalleryUrlActivity;
import com.example.fei.yhb_20.ui.PersonalActivity;
import com.example.fei.yhb_20.utils.ACache;
import com.example.fei.yhb_20.utils.ExpressionUtil;
import com.example.fei.yhb_20.utils.MyUtils;
import com.marshalchen.common.ui.recyclerviewitemanimator.SlideInOutBottomItemAnimator;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.datatype.BmobPointer;
import cn.bmob.v3.listener.CountListener;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.GetListener;
public class MainFragment extends Fragment {
private static final String TAG = "MainFragment";
private static RecyclerView recyclerView;
private static Picasso picasso;
private static ACache aCache;
LinearLayoutManager layoutManager;
private SharedPreferences sharedPreferences;
private static LinearLayout llFoot;
private static Button send;
private static EditText comment;
private static Post currentPost;
private int previousTotal = 0;
private boolean loading = true;
private int visibleThreshold = 2;
int firstVisibleItem;
int visibleItemCount;
int totalItemCount;
private DrawerLayout ll_container;
private SwipeRefreshLayout swipeRefreshLayout;
private static int curPage = 0;
private static final int limit = 3;
private MyAdapter myAdapter;
private List<Post> datas;
private static ArrayList<String> everAccessPaths;
public static ArrayList<Boolean> isCompleteds;
private static ArrayList<String> arrayList;
private static String[] paths;
public MainFragment() {
}
;
private BaseUser baseUser;
ViewTreeObserver.OnGlobalLayoutListener globalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//比较Activity根布局与当前布局的大小
int heightDiff = ll_container.getRootView().getHeight() - ll_container.getHeight();
if (heightDiff > 200) {
//大小超过100时,一般为显示虚拟键盘事件
getActivity().findViewById(R.id.footer).setVisibility(View.GONE);
llFoot.setVisibility(View.VISIBLE);
Log.e(TAG, "显示");
} else {
Log.e(TAG, "隐藏");
getActivity().findViewById(R.id.footer).setVisibility(View.VISIBLE);
llFoot.setVisibility(View.GONE);
// LayoutInflater.from(MainActivity.this).inflate(R.layout.fragment_main,null).findViewById(R.id.team_singlechat_id_foot).setVisibility(View.GONE);
//大小小于100时,为不显示虚拟键盘或虚拟键盘隐藏
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
Log.d(TAG, "onCreateView is invoked");
everAccessPaths = new ArrayList<>();
isCompleteds = new ArrayList<>();
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout);
swipeRefreshLayout.setColorSchemeResources(R.color.orange, R.color.green, R.color.blue);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (!swipeRefreshLayout.isRefreshing()) {
Log.d(TAG, "ignore manually update!");
} else {
// loadPage();成功得到数据之后就停止刷新
refreshView();
}
}
});
recyclerView = (RecyclerView) view.findViewById(R.id.main_recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new SlideInOutBottomItemAnimator(recyclerView));
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView mrecyclerView, int dx, int dy) {
super.onScrolled(mrecyclerView, dx, dy);
visibleItemCount = recyclerView.getChildCount(); //
totalItemCount = layoutManager.getItemCount();
firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
Log.d(TAG, String.valueOf(layoutManager.findLastCompletelyVisibleItemPosition()));
Log.d(TAG, "visibleItemCount:" + visibleItemCount + "totalItemCount:" + totalItemCount + "firstVisibleItem:" + firstVisibleItem + "previousTotal:" + previousTotal);
if ((totalItemCount - 1) == layoutManager.findLastCompletelyVisibleItemPosition()) {
if (mrecyclerView.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING) {
Log.d(TAG, "dragging");
} else if (mrecyclerView.getScrollState() == RecyclerView.SCROLL_STATE_IDLE) {
Log.d(TAG, "idle");
} else if (mrecyclerView.getScrollState() == RecyclerView.SCROLL_STATE_SETTLING) {
Log.d(TAG, "settling");
}
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
//每一次都更新previousTotal,记录总共有多少条记录已经绑定到adapter上去了
previousTotal = totalItemCount;
}
}
if (!loading && (totalItemCount - visibleItemCount)
<= (firstVisibleItem + visibleThreshold)) {
// 在这里添加加载更多的代码
Log.d(TAG, "need to load more");
query();
loading = true;
}
}
}
});
ll_container = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout);
send = (Button) view.findViewById(R.id.team_singlechat_id_send);
comment = (EditText) view.findViewById(R.id.team_singlechat_id_edit);
send.setEnabled(false);
ImageView face = (ImageView) view.findViewById(R.id.team_singlechat_id_expression);
llFoot = (LinearLayout) view.findViewById(R.id.team_singlechat_id_foot);
ll_container.getViewTreeObserver().addOnGlobalLayoutListener(globalLayoutListener);
comment.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.e(TAG, "before" + s);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e(TAG, "onTextChanged" + s);
if (TextUtils.isEmpty(s)) {
send.setEnabled(false);
} else {
send.setEnabled(true);
}
}
@Override
public void afterTextChanged(Editable s) {
Log.e(TAG, "after");
}
});
face.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyUtils.showFaceDialog(getActivity(), comment);
}
});
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
llFoot.setVisibility(View.INVISIBLE);
MyUtils.commentSend(currentPost, comment, getActivity());
//强制隐藏
imm.hideSoftInputFromWindow(comment.getWindowToken(), 0);
comment.setText(null);
}
});
picasso = Picasso.with(getActivity());
//TODO 不要在这里联网查询
// recyclerView.setAdapter(new MyAdapter(data));
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//TODO 在这里联网
baseUser = BmobUser.getCurrentUser(getActivity(), BaseUser.class);
sharedPreferences = getActivity().getSharedPreferences("settings", 0);
refreshView();
}
/**
* 联网进行刷新并写入磁盘
*/
public void refreshView() {
Log.d(TAG, "mainfragment");
curPage = 0;
everAccessPaths.clear();
swipeRefreshLayout.setRefreshing(true);
BmobQuery<Post> query = new BmobQuery<>();
if (baseUser.getMyInfo() != null) {
if (baseUser.getMyInfo().getBlockers() != null) {
query.addWhereNotContainedIn("ownerId", baseUser.getMyInfo().getBlockers());
}
}
query.include("user");
query.setLimit(limit);
query.order("-createdAt");
query.findObjects(getActivity(), new FindListener<Post>() {
@Override
public void onSuccess(final List<Post> posts) {
//在这里写入缓存
datas = posts;
for (int i = 0; i < posts.size(); i++) {
aCache.put(String.valueOf(i), posts.get(i));
if (aCache.getAsBinary(posts.get(i).getObjectId() + "footerBoolean") == null) {
byte[] footerBoolean = {1, 1, 1, 1};
aCache.put(posts.get(i).getObjectId() + "footerBoolean", footerBoolean);
}
//根据ObjectId来
Log.e(TAG, "write success " + i);
}
aCache.put("cacheSize", String.valueOf(posts.size()));
//就是把这个去掉就行
myAdapter = new MyAdapter(datas, getActivity());
recyclerView.setAdapter(myAdapter);
swipeRefreshLayout.setRefreshing(false);
}
@Override
public void onError(int err, String s) {
Log.i(TAG, s + err);
Log.e(TAG, s);
if (sharedPreferences.getBoolean("ever", false)) {
List<Post> objects = new ArrayList<Post>();
int size = Integer.parseInt(aCache.getAsString("cacheSize"));
Post post;
for (int i = 0; i < size; i++) {
post = (Post) aCache.getAsObject(String.valueOf(i));
if (post == null) {
android.util.Log.e(TAG, "post is null");
}
objects.add(post);
}
datas = objects;
myAdapter = new MyAdapter(datas, getActivity());
recyclerView.setAdapter(myAdapter);
swipeRefreshLayout.setRefreshing(false);
} else {
Toast.makeText(getActivity(), "您没有登录过,没有缓存文件!", Toast.LENGTH_LONG).show();
}
}
});
}
/**
* 现在先不用管上载加载更多的功能实现,以后再说吧,应该不难;能加载一次,加载一次后就不能成功了,是curpage的问题
*/
public void query() {
swipeRefreshLayout.setRefreshing(true);
BmobQuery<Post> query = new BmobQuery<>();
query.include("user");
if (baseUser.getMyInfo() != null) {
if (baseUser.getMyInfo().getBlockers() != null) {
query.addWhereNotContainedIn("ownerId", baseUser.getMyInfo().getBlockers());
}
}
query.setLimit(limit);
query.order("-createdAt");
Log.d(TAG + "curPage", String.valueOf(curPage));
query.setSkip((curPage + 1) * limit);
query.findObjects(getActivity(), new FindListener<Post>() {
@Override
public void onSuccess(final List<Post> posts) {
if (posts != null) {
//在这里写入缓存
datas = posts;
curPage++;
//这个是写入磁盘,不用管理了,已经完善
for (int i = 0; i < posts.size(); i++) {
Log.d(TAG, posts.get(i).toString());
aCache.put(String.valueOf(i), posts.get(i));
if (aCache.getAsBinary(posts.get(i).getObjectId() + "footerBoolean") == null) {
byte[] footerBoolean = {1, 1, 1, 1};
aCache.put(posts.get(i).getObjectId() + "footerBoolean", footerBoolean);
}
Log.e(TAG, "write success " + i);
}
aCache.put("cacheSize", String.valueOf(posts.size()));
Log.d(TAG + "liang", String.valueOf(posts.size()));
myAdapter.addQuote(posts);
swipeRefreshLayout.setRefreshing(false);
//只要能执行到这里来就能刷新
loading = false;
}
}
@Override
public void onError(int err, String s) {
Log.i(TAG, s + err);
Log.e(TAG, s);
if (sharedPreferences.getBoolean("ever", false)) {
List<Post> objects = new ArrayList<Post>();
int size = Integer.parseInt(aCache.getAsString("cacheSize"));
Post post;
for (int i = 0; i < size; i++) {
post = (Post) aCache.getAsObject(String.valueOf(i));
if (post == null) {
android.util.Log.e(TAG, "post is null");
}
objects.add(post);
}
datas = objects;
myAdapter.addQuote(datas);
swipeRefreshLayout.setRefreshing(false);
loading = false;
} else {
Toast.makeText(getActivity(), "您没有登录过,没有缓存文件!", Toast.LENGTH_LONG).show();
}
}
});
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
aCache = ACache.get(getActivity());
}
/**
* 这个adapter太过于庞大了,以后应该尽量与视图分开写,而且adapter中也要实现更多的功能
*/
private static class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private static final int LIKE = 0;
private static final int DISLIKE = 1;
private static final int COMMENT = 2;
private int lastPosition = -1;
private List<Post> data;
private Context context;
public MyAdapter(List<Post> data, Context context) {
this.data = data;
this.context = context;
}
/**
* 在下面append 之前的post
*
* @param q
*/
private void addQuote(List<Post> q) {
for (Post post : q) {
data.add(post);
}
notifyItemRangeInserted(data.size() - 1, q.size());
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
// 加载Item的布局.布局中用到的真正的CardView.
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.main_item, viewGroup, false);
// ViewHolder参数一定要是Item的Root节点.
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int i) {
//从data中获取数据,填充入视图中,处理获取的数据
final Post post = data.get(i);
if (post != null) {
final String objectId = post.getObjectId();
final String userId = post.getUser().getObjectId();
final String cacheBooleanKey = objectId + "footerBoolean";
final ArrayList<Integer> numberFooter = post.getNumberFooter();
final byte[] footerBoolean = aCache.getAsBinary(cacheBooleanKey);
//要显示表情
String zhengze = "f0[0-9]{2}|f10[0-7]";
SpannableString spannableString = ExpressionUtil.getExpressionString(context, post.getContent(), zhengze);
viewHolder.content.setText(spannableString);
viewHolder.userName.setText(post.getUser().getUsername());// 级联查询查找username
Log.d(TAG, post.getUser().getUsername());
String merchantName = "";
if (post.getMerchantName().equals("") || post.getMerchantName() == null) {
//do nothing
Log.d(TAG, "merchantName is null");
} else {
merchantName = " " + post.getMerchantName() + " ";
}
viewHolder.merchantName.setText(merchantName);
viewHolder.tvLike.setText(String.valueOf(numberFooter.get(LIKE)));
viewHolder.tvDislike.setText(String.valueOf(numberFooter.get(DISLIKE)));
BmobQuery<Comment> commentsQuery = new BmobQuery<>();
commentsQuery.addWhereRelatedTo("comment", new BmobPointer(post));
commentsQuery.count(context, Comment.class, new CountListener() {
@Override
public void onSuccess(int count) {
viewHolder.tvConment.setText(String.valueOf(count));
}
@Override
public void onFailure(int i, String s) {
Log.d(TAG, s + i);
}
});
//更改comment的计数
BmobQuery<Merchant> query = new BmobQuery<Merchant>();
query.getObject(context, post.getUser().getObjectId(), new GetListener<Merchant>() {
@Override
public void onSuccess(Merchant merchant) {
if (merchant.getAvatarPaht() != null) {
Picasso.with(context).load(merchant.getAvatarPaht()).placeholder(R.drawable.pull_scroll_view_avatar_default).error(R.drawable.pull_scroll_view_avatar_default).resize(45, 45).into(viewHolder.avata);
} else {
Log.d(TAG, "没有设置头像");
}
}
@Override
public void onFailure(int i, String s) {
Log.e(TAG, s + i);
}
});
viewHolder.container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, DeatilActivity.class);
intent.putExtra("post", post);
intent.putExtra("sourceActivity", "MainFragment");
context.startActivity(intent);
}
});
/**
*定义菜单事件
*/
viewHolder.list.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyUtils.showPopupMenu(context, post.getObjectId(), userId);
}
});
/**
* 喜欢
*/
viewHolder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyUtils.footerCommand(footerBoolean, LIKE, viewHolder.ivLike, viewHolder.tvLike, numberFooter, aCache, post, context, objectId);
}
});
/**
* 没有帮助
*/
viewHolder.dislike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyUtils.footerCommand(footerBoolean, DISLIKE, viewHolder.ivDislike, viewHolder.tvDislike, numberFooter, aCache, post, context, objectId);
}
});
/**
* 评论
*/
viewHolder.comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//得到当前的post
currentPost = post;
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
llFoot.setVisibility(View.VISIBLE);
comment.requestFocus();
//强制显示键盘
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
});
/**
* 分享事件
*/
viewHolder.share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "我有好东西与您分享" + post.getContent());
sendIntent.setType("text/plain");
context.startActivity(sendIntent);
}
});
//点击头像进入个人主页
viewHolder.avata.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PersonalActivity.class);
intent.putExtra("post", post);
intent.putExtra("user", post.getUser());
context.startActivity(intent);
}
});
//点击姓名进入个人主页
viewHolder.userName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PersonalActivity.class);
intent.putExtra("user", post.getUser());
context.startActivity(intent);
}
});
/**
* 设置展示的时候的图标颜色值,要正确的显示
*/
Log.e(TAG, Arrays.toString(footerBoolean));
if (footerBoolean != null) {
if (footerBoolean[DISLIKE] == 0) {
viewHolder.ivDislike.setImageResource(R.drawable.icon_dislike_pressed);
}
if (footerBoolean[LIKE] == 0) {
viewHolder.ivLike.setImageResource(R.drawable.icon_heart_pressed);
}
}
//格式化时间
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = simpleDateFormat.parse(post.getCreatedAt());
} catch (ParseException e) {
e.printStackTrace();
}
viewHolder.time.setText(MyUtils.timeLogic(date, context));
//获取图片,使用Picasso可以缓存
paths = post.getPaths().split("\\|");
int t = paths.length;
Log.e(TAG, String.valueOf(t));
arrayList = post.getThumnailsName();
Log.e(TAG, arrayList.toString());
/**
* 现在加载的是大图,以后要改
*/
final String paths[] = post.getPaths().split("\\|");
ImageView imageView;
for (String path : paths) {
imageView = new ImageView(context);
picasso.load(path).resize(200, 200).into(imageView);
imageView.setPadding(3, 3, 3, 3);
viewHolder.gallery.addView(imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, GalleryUrlActivity.class);
intent.putExtra("photoUrls", paths);
intent.putExtra("currentItem", 0);
context.startActivity(intent);
}
});
}
/**
* 想获取缩略图,但是没有成功
* 问题解决了,是因为没有进行sign认证,所以没有有400错误
* 循环的添加总是有问题
* 各种方法都没有修复图片的重复的问题
*/
// getPic(0,viewHolder.gallery);
// for (int i1 = 0; i1 < arrayList.size(); i1++) {
// final int finalI = i1;
// BmobProFile.getInstance(context).submitThumnailTask(arrayList.get(i1), 1, new ThumbnailListener() {
// @Override
// public void onSuccess(final String thumbnailName, String thumbnailUrl) {
// /**
// * 解决了图片的重复加载的问题,没有完全解决,还可以优化,还是有问题
// * !everAccessPaths.contains(thumbnailName) ||
// */
// if (!everAccessPaths.contains(thumbnailName) || viewHolder.gallery.getChildCount() != arrayList.size()) {
// Log.d(TAG + "fei", i + ":" + viewHolder.gallery.getChildCount() + ":" + arrayList.size());
// ImageView imageView = new ImageView(context);
//// picasso.load(BmobProFile.getInstance(context).signURL(thumbnailName, thumbnailUrl, "54f197dc6dce11fc7c078c07420a080e", 0, null)).placeholder(R.drawable.ic_launcher).resize(200, 200).into(imageView, new Callback() {
// picasso.load(BmobProFile.getInstance(context).signURL(thumbnailName, thumbnailUrl, "54f197dc6dce11fc7c078c07420a080e", 0, null)).placeholder(R.drawable.ic_launcher).resize(200, 200).into(imageView, new Callback() {
// @Override
// public void onSuccess() {
// everAccessPaths.add(thumbnailName);
// }
//
// @Override
// public void onError() {
// Toast.makeText(context, "网络连接缓慢", Toast.LENGTH_LONG).show();
// //do nothing
// }
// });
// imageView.setPadding(3, 3, 3, 3);
// viewHolder.gallery.addView(imageView);
// imageView.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// Intent intent = new Intent(context, GalleryUrlActivity.class);
// intent.putExtra("photoUrls", paths);
// intent.putExtra("currentItem", finalI);
// context.startActivity(intent);
// }
// });
//
// }
// }
//
// @Override
// public void onError(int statuscode, String errormsg) {
// Log.e(TAG, errormsg);
// }
// });
//
// }
}
setAnimation(viewHolder.container, i);
}
private void getPic(final int position, final LinearLayout gallery) {
BmobProFile.getInstance(context).submitThumnailTask(arrayList.get(position), 1, new ThumbnailListener() {
@Override
public void onSuccess(final String thumbnailName, String thumbnailUrl) {
/**
* 解决了图片的重复加载的问题,没有完全解决,还可以优化,还是有问题
* !everAccessPaths.contains(thumbnailName) ||
*/
if (isCompleteds.isEmpty() || !isCompleteds.get(position)) {
Log.d(TAG + "fei", position + ":" + gallery.getChildCount() + ":" + arrayList.size());
ImageView imageView = new ImageView(context);
picasso.load(BmobProFile.getInstance(context).signURL(thumbnailName, thumbnailUrl, "54f197dc6dce11fc7c078c07420a080e", 0, null)).placeholder(R.drawable.ic_launcher).resize(200, 200).into(imageView, new Callback() {
@Override
public void onSuccess() {
everAccessPaths.add(thumbnailName);
int pos = position + 1;
if ((position + 1) < arrayList.size()) {
getPic(pos, gallery);
} else {
isCompleteds.add(true);
}
}
@Override
public void onError() {
Toast.makeText(context, "网络连接缓慢", Toast.LENGTH_LONG).show();
//do nothing
}
});
imageView.setPadding(3, 3, 3, 3);
gallery.addView(imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, GalleryUrlActivity.class);
intent.putExtra("photoUrls", paths);
// intent.putExtra("currentItem", finalI);
context.startActivity(intent);
}
});
}
}
@Override
public void onError(int statuscode, String errormsg) {
Log.e(TAG, errormsg);
}
});
}
private void setAnimation(View viewToAnimate, int position) {
// If the bound view wasn't previously displayed on screen, it's animated
if (position > lastPosition) {
Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.slide_in_left);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
@Override
public int getItemCount() {
return data.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView merchantName, userName, content, time, tvLike, tvDislike, tvConment;
ImageView avata, share, list, ivLike, ivDislike, ivComment;
LinearLayout like, dislike, comment, gallery;
CardView container;
public ViewHolder(View itemView) {
// super这个参数一定要注意,必须为Item的根节点.否则会出现莫名的FC.
super(itemView);
merchantName = (TextView) itemView.findViewById(R.id.tv_main_merchantName);
userName = (TextView) itemView.findViewById(R.id.tv_main_postName);
content = (TextView) itemView.findViewById(R.id.tv_main_content);
time = (TextView) itemView.findViewById(R.id.tv_main_time);
avata = (ImageView) itemView.findViewById(R.id.iv_main_logo);
like = (LinearLayout) itemView.findViewById(R.id.ll_main_like);
dislike = (LinearLayout) itemView.findViewById(R.id.ll_main_dislike);
comment = (LinearLayout) itemView.findViewById(R.id.ll_main_conment);
tvLike = (TextView) itemView.findViewById(R.id.tv_main_like);
tvDislike = (TextView) itemView.findViewById(R.id.tv_main_dislike);
tvConment = (TextView) itemView.findViewById(R.id.tv_main_comment);
share = (ImageView) itemView.findViewById(R.id.iv_main_share);
list = (ImageView) itemView.findViewById(R.id.iv_main_list);
gallery = (LinearLayout) itemView.findViewById(R.id.ll_gallery);
ivComment = (ImageView) itemView.findViewById(R.id.iv_main_comment);
ivDislike = (ImageView) itemView.findViewById(R.id.iv_main_dislike);
ivLike = (ImageView) itemView.findViewById(R.id.iv_main_like);
container = (CardView) itemView.findViewById(R.id.container);
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
everAccessPaths.clear();
}
}