package org.aisen.android.ui.fragment; import android.os.Bundle; import android.view.View; import org.aisen.android.R; import org.aisen.android.support.inject.ViewInject; import org.aisen.android.ui.fragment.adapter.BasicListAdapter; import org.aisen.android.ui.fragment.adapter.IPagingAdapter; import org.aisen.android.ui.fragment.itemview.AFooterItemView; import org.aisen.android.ui.fragment.itemview.AHeaderItemViewCreator; import org.aisen.android.ui.widget.pla.PLAAbsListView; import org.aisen.android.ui.widget.pla.PLAAdapterView; import org.aisen.android.ui.widget.pla.PLAMultiColumnListView; import java.io.Serializable; import java.util.ArrayList; /** * 维护一个瀑布流 * */ public abstract class AWaterfallFragment<T extends Serializable, Ts extends Serializable, Header extends Serializable> extends APagingFragment<T, Ts, Header, PLAMultiColumnListView> implements PLAAbsListView.OnScrollListener, PLAMultiColumnListView.OnItemClickListener { @ViewInject(idStr = "plaMultiColumnList") PLAMultiColumnListView mPlaMultiColumnList; @Override public int inflateContentView() { return R.layout.comm_ui_waterfall; } @Override public PLAMultiColumnListView getRefreshView() { return mPlaMultiColumnList; } @Override protected void setupRefreshView(Bundle savedInstanceSate) { super.setupRefreshView(savedInstanceSate); mPlaMultiColumnList.setOnScrollListener(this); mPlaMultiColumnList.setOnItemClickListener(this); } @Override protected void toLastReadPosition() { super.toLastReadPosition(); runUIRunnable(new Runnable() { @Override public void run() { mPlaMultiColumnList.setSelectionFromTop(getLastReadPosition(), getLastReadTop() + mPlaMultiColumnList.getPaddingTop()); } }); } @Override public void onItemClick(PLAAdapterView<?> parent, View view, int position, long id) { } @Override protected void addFooterViewToRefreshView(AFooterItemView<?> footerItemView) { getRefreshView().addFooterView(footerItemView.getConvertView()); } @Override protected void addHeaderViewToRefreshView(AHeaderItemViewCreator<?> headerItemViewCreator) { // TODO } @Override protected IPagingAdapter<T> newAdapter(ArrayList<T> datas) { return new BasicListAdapter<>(this, datas); } @Override protected void bindAdapter(IPagingAdapter adapter) { if (getRefreshView().getAdapter() == null) getRefreshView().setAdapter((BasicListAdapter) adapter); } @Override protected int getFirstVisiblePosition() { return mPlaMultiColumnList.getFirstVisiblePosition(); } @Override public void requestDataOutofdate() { getRefreshView().setSelectionFromTop(0, 0); super.requestDataOutofdate(); } @Override public void onScrollStateChanged(PLAAbsListView view, int scrollState) { onScrollStateChanged(scrollState); } @Override public void onScroll(PLAAbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { onScroll(firstVisibleItem, visibleItemCount, totalItemCount); } }