package com.yaoyumeng.v2ex.ui.widget; import android.view.LayoutInflater; import android.view.View; import android.widget.ListView; import com.yaoyumeng.v2ex.R; import com.yaoyumeng.v2ex.ui.adapter.HeaderViewRecyclerAdapter; import java.lang.reflect.Method; /** * Created by chaochen on 14-10-22. */ public class FootUpdate { View mLayout; View mClick; View mLoading; Object mListView; boolean mAdd = false; public FootUpdate() { } public int getHigh() { if (mLayout == null) { return 0; } return mLayout.getHeight(); } private void removeFromListView(Object listView, View v) { if (listView instanceof ListView) { try { Method method = listView.getClass().getMethod("removeFooterView", View.class); method.invoke(listView, v); mAdd = false; } catch (Exception e) { } } else if (listView instanceof HeaderViewRecyclerAdapter) { try { Method method = listView.getClass().getMethod("removeFooterView", View.class); method.invoke(listView, v); mAdd = false; } catch (Exception e) { } } } private void addToListView(Object listView, View v) { if (listView instanceof ListView) { try { Method method = listView.getClass().getMethod("addFooterView", View.class); method.invoke(listView, v); mAdd = true; } catch (Exception e) { } } else if (listView instanceof HeaderViewRecyclerAdapter) { try { Method method = listView.getClass().getMethod("addFooterView", View.class); method.invoke(listView, v); mAdd = true; } catch (Exception e) { } } } public void init(Object listView, LayoutInflater inflater, final LoadMore loadMore) { mListView = listView; mLayout = inflater.inflate(R.layout.listview_foot, null, false); mLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); mClick = mLayout.findViewById(R.id.textView); mClick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { loadMore.loadMore(); showLoading(); } }); mLoading = mLayout.findViewById(R.id.progressBar); mLayout.setVisibility(View.GONE); } public void showLoading() { show(true, true); } public void showFail() { show(true, false); } public void dismiss() { show(false, true); } private void show(boolean show, boolean loading) { if (mLayout == null) { return; } if (show) { if (!mAdd) addToListView(mListView, mLayout); mLayout.setVisibility(View.VISIBLE); mLayout.setPadding(0, 0, 0, 0); if (loading) { mClick.setVisibility(View.INVISIBLE); mLoading.setVisibility(View.VISIBLE); } else { mClick.setVisibility(View.VISIBLE); mLoading.setVisibility(View.INVISIBLE); } } else { removeFromListView(mListView, mLayout); mLayout.setVisibility(View.GONE); mLayout.setPadding(0, -mLayout.getHeight(), 0, 0); } } public static interface LoadMore { public void loadMore(); } }