package org.aisen.wen.ui.view.impl; import android.os.Bundle; import android.view.View; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.ListView; import org.aisen.wen.R; import org.aisen.wen.R2; import org.aisen.wen.ui.adapter.BasicListAdapter; import org.aisen.wen.ui.adapter.IPagingAdapter; import org.aisen.wen.ui.itemview.AFooterItemView; import org.aisen.wen.ui.itemview.AHeaderItemViewCreator; import org.aisen.wen.ui.presenter.IPagingPresenter; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import butterknife.BindView; /** * Created by wangdan on 16/10/13. */ public abstract class AListView<Item extends Serializable, Result extends Serializable, Header extends Serializable> extends APagingView<Item, Result, Header, ListView> implements AdapterView.OnItemClickListener, AbsListView.OnScrollListener{ @BindView(R2.id.listView) ListView mListView; @Override public int setLayoutId() { return R.layout.comm_ui_list; } @Override protected void setupRefreshView(Bundle savedInstanceSate) { super.setupRefreshView(savedInstanceSate); // 设置事件 getRefreshView().setOnScrollListener(this); getRefreshView().setOnItemClickListener(this); } @Override protected void addFooterViewToRefreshView(AFooterItemView<?> footerItemView) { getRefreshView().addFooterView(footerItemView.getConvertView()); } @Override protected void addHeaderViewToRefreshView(AHeaderItemViewCreator<?> headerItemViewCreator) { } @Override public void bindAdapter(IPagingAdapter adapter) { if (getRefreshView().getAdapter() == null) getRefreshView().setAdapter((BasicListAdapter) adapter); } @Override public IPagingAdapter<Item> newAdapter(ArrayList<Item> datas) { return new BasicListAdapter<>(this, datas); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { onScroll(firstVisibleItem, visibleItemCount, totalItemCount); } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { onScrollStateChanged(scrollState); } @Override public boolean handleResult(IPagingPresenter.RefreshMode mode, List<Item> list, Result result) { return false; } @Override public int getFirstVisiblePosition() { return getRefreshView().getFirstVisiblePosition(); } @Override public ListView getRefreshView() { return mListView; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } /** * 初始化ListView * * @param items */ public void setItems(ArrayList<Item> items) { if (items == null) return; getLoadingLayout().setVisibility(View.GONE); getFailureLayout().setVisibility(View.GONE); if (items.size() == 0 && emptyLayout != null) { getEmptyLayout().setVisibility(View.VISIBLE); getContentLayout().setVisibility(View.GONE); } else { getEmptyLayout().setVisibility(View.GONE); getContentLayout().setVisibility(View.VISIBLE); } getAdapter().getDatas().clear(); getAdapter().getDatas().addAll(items); if (getRefreshView().getAdapter() == null) { bindAdapter(getAdapter()); } else { getRefreshView().setSelectionFromTop(0, 0); getAdapter().notifyDataSetChanged(); } } }