package com.team.zhuoke.ui.refreshview.recyclerview; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.team.zhuoke.R; import com.team.zhuoke.ui.refreshview.XRefreshView; import com.team.zhuoke.ui.refreshview.callback.IFooterCallBack; import com.team.zhuoke.ui.refreshview.utils.Utils; public class CustomerFooter extends LinearLayout implements IFooterCallBack { private Context mContext; private View mContentView; private View mProgressBar; private TextView mHintView; private TextView mClickView; private boolean showing = false; public CustomerFooter(Context context) { super(context); initView(context); } public CustomerFooter(Context context, AttributeSet attrs) { super(context, attrs); initView(context); } private RecyclerView recyclerView; public void setRecyclerView(RecyclerView recyclerView) { this.recyclerView = recyclerView; } @Override public void callWhenNotAutoLoadMore(final XRefreshView xRefreshView) { if (recyclerView != null) { //当数据不满一屏时不显示点击加载更多 show(Utils.isRecyclerViewFullscreen(recyclerView)); } mClickView.setText(R.string.xrefreshview_footer_hint_click); mClickView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { xRefreshView.notifyLoadMore(); } }); } @Override public void onStateReady() { mHintView.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE); mClickView.setVisibility(View.VISIBLE); mClickView.setText(R.string.xrefreshview_footer_hint_click); } @Override public void onStateRefreshing() { mHintView.setVisibility(View.GONE); mProgressBar.setVisibility(View.VISIBLE); mClickView.setVisibility(View.GONE); show(true); } @Override public void onReleaseToLoadMore() { mHintView.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE); mClickView.setVisibility(View.VISIBLE); mClickView.setText(R.string.xrefreshview_footer_hint_release); } @Override public void onStateFinish(boolean hideFooter) { if (hideFooter) { mHintView.setText(R.string.xrefreshview_footer_hint_normal); } else { //处理数据加载失败时ui显示的逻辑,也可以不处理,看自己的需求 mHintView.setText(R.string.xrefreshview_footer_hint_fail); } mHintView.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.GONE); mClickView.setVisibility(View.GONE); } @Override public void onStateComplete() { mHintView.setText(R.string.xrefreshview_footer_hint_complete); mHintView.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.GONE); show(true); } @Override public void show(boolean show) { showing = show; LayoutParams lp = (LayoutParams) mContentView .getLayoutParams(); lp.height = show ? LayoutParams.WRAP_CONTENT : 0; mContentView.setLayoutParams(lp); } @Override public boolean isShowing() { return showing; } private void initView(Context context) { mContext = context; ViewGroup moreView = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.xrefreshview_footer, this); moreView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); mContentView = moreView.findViewById(R.id.xrefreshview_footer_content); mProgressBar = moreView .findViewById(R.id.xrefreshview_footer_progressbar); mHintView = (TextView) moreView .findViewById(R.id.xrefreshview_footer_hint_textview); mClickView = (TextView) moreView .findViewById(R.id.xrefreshview_footer_click_textview); } @Override public int getFooterHeight() { return getMeasuredHeight(); } }