package net.coding.program;
import android.view.LayoutInflater;
import android.view.View;
import net.coding.program.common.Global;
import java.lang.reflect.Method;
/**
* Created by chaochen on 14-10-22.
*/
public class FootUpdate {
View mLayout;
View mClick;
View mLoading;
public FootUpdate() {
}
public int getHigh() {
if (mLayout == null) {
return 0;
}
return mLayout.getHeight();
}
public void initToHead(Object listView, LayoutInflater inflater, final LoadMore loadMore) {
View v = inflater.inflate(R.layout.listview_foot, null);
// 为了防止触发listview的onListItemClick事件
mLayout = v.findViewById(R.id.layout);
mLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
mClick = v.findViewById(R.id.textView);
mClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadMore.loadMore();
showLoading();
}
});
mLoading = v.findViewById(R.id.progressBar);
try {
Method method = listView.getClass().getMethod("addHeaderView", View.class);
method.invoke(listView, v);
} catch (Exception e) {
Global.errorLog(e);
}
mLayout.setVisibility(View.GONE);
}
public void init(Object listView, LayoutInflater inflater, final LoadMore loadMore) {
View v = inflater.inflate(R.layout.listview_foot, null, false);
// 为了防止触发listview的onListItemClick事件
mLayout = v.findViewById(R.id.layout);
mLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
mClick = v.findViewById(R.id.textView);
mClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadMore.loadMore();
showLoading();
}
});
mLoading = v.findViewById(R.id.progressBar);
try {
Method method = listView.getClass().getMethod("addFooterView", View.class);
method.invoke(listView, v);
} catch (Exception e) {
Global.errorLog(e);
}
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) {
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 {
mLayout.setVisibility(View.INVISIBLE);
mLayout.setPadding(0, -mLayout.getHeight(), 0, 0);
}
}
public void updateState(int code, boolean isLastPage, int locatedSize) {
if (code == 0) {
if (isLastPage) {
dismiss();
} else {
showLoading();
}
} else {
if (locatedSize > 0) {
showFail();
} else {
dismiss(); // 显示猴子照片
}
}
}
public interface LoadMore {
void loadMore();
}
}