開發項目過程當中基本都會用到listView的下拉刷新和上滑加載更多,爲了方便重寫的ListView來實現下拉刷新,同時添加了上拉自動加載更多的功能。java
Android下拉刷新能夠分爲兩種狀況:android
1.獲取更多的數據,按服務器數據庫時間順序存儲入狀況,此刻咱們是獲取是顯示在咱們應用中的數據更早前的數據,這也是最多見的狀況,好比(微博獲取更多信息,就是獲取更多更早前的信息,而後動態的添加到已有的數據的下方);git
2.獲取更多的最新的數據,其實仍是一種獲取更多的操做方式。github
public class MainActivity extends Activity implements IXListViewListener { private XListView listView; private int in = 6; private Adapter adapter; private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { // TODO Auto-generated method stub listView = (XListView) findViewById(R.id.list); listView.setPullLoadEnable(true); adapter = new Adapter(MainActivity.this); listView.setAdapter(adapter); listView.setXListViewListener(this); mHandler = new Handler(); } private void onLoad() { listView.stopRefresh(); listView.stopLoadMore(); listView.setRefreshTime("剛剛"); } @Override public void onRefresh() { mHandler.postDelayed(new Runnable() { @Override public void run() { onLoad(); } }, 2000); } @Override public void onLoadMore() { mHandler.postDelayed(new Runnable() { @Override public void run() { in += 4; onLoad(); } }, 2000); } private static String[] string = new String[] { "民政局於,請帶好相關證件文書 ", "財政部發布公告,因爲資金調整信息未完善,下週在發放工資,請各位見諒", "信息部門於2016-11-11日在某某地方開會,特此通知,請帶好相關證件", "黨政辦發放通知,有關貧困地區扶貧政策,但願每一個部門作出相應的方案,於2016-11-11開會討論" }; public class Adapter extends BaseAdapter { private Context context; private LayoutInflater inflater; public Adapter(Context context) { // TODO Auto-generated constructor stub this.context = context; inflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return in; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder = null; final int index = position; if (convertView == null) { convertView = inflater.inflate(R.layout.item_news_mass, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.mName.setText(string[(position % 4)]); return convertView; } class ViewHolder { private ImageView mImageView; private TextView mName; public ViewHolder(View view) { mName = (TextView) view.findViewById(R.id.item_news_msg); } } } }
<com.example.pullablerefresh.XListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="#FFFFFF" android:cacheColorHint="#00000000" android:divider="#FFFFFF" android:dividerHeight="5dp" android:drawSelectorOnTop="false" android:listSelector="#00000000" android:scrollbars="none" android:scrollingCache="false" />
因爲代碼太多,完整代碼未給出,源碼直接下載便可數據庫