ListView下拉刷新框架使用
来源:互联网 发布:youtube什么软件 编辑:程序博客网 时间:2024/05/21 21:46
在github上下载类库带入项目就可以使用,这里就不详细说明下载步骤。现在直接看看ListView的下拉刷新的使用示例。
布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" ><!-- The PullToRefreshListView replaces a standard ListView widget. --> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pull_refresh_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000" android:divider="#19000000" android:dividerHeight="4dp" android:fadingEdge="none" android:fastScrollEnabled="false" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:smoothScrollbar="true" /></LinearLayout>
MainActivity代码
package com.example.listview;import java.text.SimpleDateFormat;import java.util.Date;import java.util.LinkedList;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;import com.handmark.pulltorefresh.library.PullToRefreshBase.State;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.handmark.pulltorefresh.library.extras.SoundPullEventListener;import android.app.ListActivity;import android.os.AsyncTask;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;/* * ListView下拉刷新可以设置声音、模式、是否允许滚动; * 更新数据需要使用一个异步类来加载数据并调用executed()方法执行异步类; */public class MainActivity extends ListActivity { /* * 菜单项 */ static final int MENU_MANUAL_REFRESH = 0; static final int MENU_DISABLE_SCROLL = 1; static final int MENU_SET_MODE = 2; static final int MENU_DEMO = 3; private PullToRefreshListView mPullToRefreshListView; private LinkedList<String> mData; //ListView显示数据 private String[] mString = new String[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "China", "Chinese", "Made in China" }; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 取得下拉刷新列表 mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list); mData = new LinkedList<String>(); for (int i = 0; i < mString.length; i++) { mData.add(mString[i]); } adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, mData); // setListAdapter(adapter); // ListView listView= mPullToRefreshListView.getRefreshableView(); mPullToRefreshListView.setAdapter(adapter); /** * 设置下拉刷新监听事件 */ mPullToRefreshListView .setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh( PullToRefreshBase<ListView> refreshView) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH-mm"); String time = simpleDateFormat.format(new Date()); String label = time; // 设置上次刷新时间 refreshView.getLoadingLayoutProxy() .setLastUpdatedLabel("上次刷新时间:" + label); Toast.makeText(getApplicationContext(), "刷新……", 0) .show(); new NewDatas().execute();// 获取新的数据 } }); /** * 下拉到底部触发的事件 */ mPullToRefreshListView .setOnLastItemVisibleListener(new OnLastItemVisibleListener() { @Override public void onLastItemVisible() { Toast.makeText(getApplicationContext(), "已经到了底部", 0) .show(); } }); /** * 添加声音 */ SoundPullEventListener<ListView> soundPullEventListener=new SoundPullEventListener<ListView>(MainActivity.this); soundPullEventListener.addSoundEvent(State.REFRESHING, R.raw.refreshing_sound); soundPullEventListener.addSoundEvent(State.RESET, R.raw.reset_sound); soundPullEventListener.addSoundEvent(State.PULL_TO_REFRESH, R.raw.pull_event); mPullToRefreshListView.setOnPullEventListener(soundPullEventListener); } /** * 加载数据 */ private class NewDatas extends AsyncTask<Void, Void, String[]> { @Override protected String[] doInBackground(Void... params) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return mString; } @Override protected void onPostExecute(String[] result) { mData.addFirst("added newly"); adapter.notifyDataSetChanged(); mPullToRefreshListView.onRefreshComplete();// 刷新完成 super.onPostExecute(result); } } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_MANUAL_REFRESH, 0, "人工刷新"); menu.add(0, MENU_DISABLE_SCROLL, 1, mPullToRefreshListView .isScrollingWhileRefreshingEnabled() ? "允许滚动" : "禁止滚动"); menu.add(0, MENU_SET_MODE, 0, mPullToRefreshListView.getMode() == Mode.BOTH ? "下拉模式" : "两端模式"); menu.add(0, MENU_DEMO, 0, "示例"); return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_MANUAL_REFRESH: new NewDatas().execute(); mPullToRefreshListView.setRefreshing(false); break; case MENU_DISABLE_SCROLL: mPullToRefreshListView .setScrollingWhileRefreshingEnabled(!mPullToRefreshListView .isScrollingWhileRefreshingEnabled()); break; case MENU_SET_MODE: mPullToRefreshListView .setMode(mPullToRefreshListView.getMode() == Mode.BOTH ? Mode.PULL_FROM_START : Mode.BOTH); break; case MENU_DEMO: mPullToRefreshListView.demo(); break; } return super.onOptionsItemSelected(item); } /** * 改变菜单项内容 */ @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem setMOde = menu.findItem(MENU_SET_MODE); setMOde.setTitle(mPullToRefreshListView.getMode() == Mode.BOTH ? "两端模式" : "下拉模式"); MenuItem srcollMode = menu.findItem(MENU_DISABLE_SCROLL); srcollMode.setTitle(mPullToRefreshListView .isScrollingWhileRefreshingEnabled() ? "允许滚动" : "禁止滚动"); return super.onPrepareOptionsMenu(menu); }}
0 0
- ListView下拉刷新框架使用
- MJRefresh下拉刷新框架使用
- 使用ListView下拉出现刷新效果
- 使用Refresh ListView 实现Android下拉刷新
- 使用下拉刷新的和上拉刷新的ListView
- 框架学习二:ListView的下拉刷新+上拉加载
- Android下拉刷新框架PullToRefresh使用小结
- EGO 框架的简单使用-----下拉刷新
- android下拉刷新框架UltraPtr使用
- ListView下拉回弹刷新
- ListView下拉刷新
- listView下拉刷新2
- ListView 下拉刷新错误
- Android ListView下拉刷新
- listview下拉刷新
- listview实现下拉刷新
- ListView下拉刷新
- android Listview下拉刷新
- stm32 i2c通信 [操作寄存器+库函数]
- 谈谈javaweb中的重定向
- 代码片段-设计模式
- ORACLE 管理undo
- js实现动态显示时间(setInterval())
- ListView下拉刷新框架使用
- The specified child already has a parent..."错误
- 汇编基础
- Cocos2dx-3.x触摸事件之实现人机交互(一)
- const有哪些作用
- 寄存器(CPU里面的内存,CPU里面的存储器)
- 2016.7.15
- 寄存器(内存访问)
- 小算法--卡片问题