CoordinatorLayout+NestedScrollView+RecyclerView 加载更多 我使用 NestedScrollView加载更多 出现内存溢出 请大神帮瞧瞧
nsv.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
View view = nsv.getChildAt(nsv.getChildCount() - 1);
int d = view.getBottom();
d -= (nsv.getHeight() + nsv.getScrollY());
if (d == 0) {
mOffset = mDatas.size();
showDialog(getString(R.string.loading),false);
getLiveRecordData();
}
}
});
下面是adapter:
public class LiveListAdapter extends RecyclerView.Adapter<LiveListAdapter.MyViewHolder> implements View.OnClickListener {
private LoadingDialog dialog;
private Context mContext;
private MyViewHolder holder;
private List<HomePageNormalModles.DataBean> mDatas;
private View.OnClickListener mListener;
private final double PREVIEW_SCALE = 0.9;
private boolean isMy;
private Handler handler;
private LayoutInflater inflater;
public LiveListAdapter(Context context, List<HomePageNormalModles.DataBean> datas, View.OnClickListener mListener) {
mContext = context;
mDatas = datas;
this.mListener = mListener;
inflater=LayoutInflater.from(mContext);
initDialog();
handler = new Handler(context.getMainLooper());
}
private void initDialog() {
dialog = new LoadingDialog(mContext, R.style.loading_dialog);
dialog.setTitle("正在删除");
dialog.setCancelable(false);// 设置是否可以通过点击Back键取消
dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条
}
/**
* 是不是自己的看到的个人中心
*
* @param isMy
*/
public void isMy(boolean isMy) {
this.isMy = isMy;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_live_record, parent, false);
holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
//TODO 容易内容溢出 需要优化
ImageLoadUtils.getInstance().displayImageOptions(holder.ivPreview, mDatas.get(position).getThumbUrl(), R.drawable.waiting_hot_health);
String liveName = mDatas.get(position).getLiveName();
if (TextUtils.isEmpty(liveName)) {
holder.tvLiveName.setVisibility(View.GONE);
} else {
holder.tvLiveName.setText(StringUtil.appendLiveName(liveName));
holder.tvLiveName.setVisibility(View.VISIBLE);
}
holder.tvStatus.setText(R.string.video_record);
HomePageNormalModles.DataBean.LiveStatBean liveStat = mDatas.get(position).getLiveStat();
if (liveStat != null) {
holder.tvRecomend.setText(String.valueOf(liveStat.getCommentsCount()));
holder.tvLike.setText(String.valueOf(liveStat.getLikeCount()));
}
if (isMy) {
holder.delete.setVisibility(View.VISIBLE);
} else {
holder.delete.setVisibility(View.GONE);
}
holder.llShare.setOnClickListener(mListener);
holder.llShare.setTag(position);
holder.ivPreview.setOnClickListener(mListener);
holder.delete.setOnClickListener(mListener);
holder.ivPreview.setTag(position);
holder.delete.setTag(position);
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dialog != null && !dialog.isShowing()) {
dialog.show();
}
deleteRecord(position);
}
});
}
@Override
public int getItemCount() {
return mDatas == null ? 0 : mDatas.size();
}
@Override
public void onClick(View v) {
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
ImageView ivPreview;
TextView tvLiveName;
TextView tvStatus;
TextView tvRecomend;
TextView tvLike;
LinearLayout llShare;
LinearLayout delete;
public MyViewHolder(View itemView) {
super(itemView);
ivPreview = (ImageView) itemView.findViewById(R.id.element_priview_iv_content);
tvLiveName = (TextView) itemView.findViewById(R.id.item_live_record_name);
tvStatus = (TextView) itemView.findViewById(R.id.elment_priview_tv_status);
tvRecomend = (TextView) itemView.findViewById(R.id.item_live_record_recommend);
tvLike = (TextView) itemView.findViewById(R.id.live_recorde_tv_like);
llShare = (LinearLayout) itemView.findViewById(R.id.item_live_record_share);
delete = (LinearLayout) itemView.findViewById(R.id.item_live_record_delete);
}
}