ListView下拉刷新与上拉加载
来源:互联网 发布:西门子200编程电缆 编辑:程序博客网 时间:2024/06/05 17:46
这里使用的是开源框架pull-to-refresh 里的 ListView功能(PullToRefreshListView)
效果图:
如何使用:
在AndroidStudio中添加 pull-to-refresh
1)File→ Project Structure→ Dependencies →LibraryDependency →搜索refresh 添加依赖即可
2)或者 gradle中直接添加依赖
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
使用PullToRefreshListView
代码:
public class MainActivity extends Activity { private List<String> mList; private PullToRefreshListView mListView; private MyAdapter mAdapter; private final static int PULL_DOWN_TO_REFRESH = 1;//下拉刷新 private final static int PULL_UP_TO_REFRESH = 2;//上拉加载 private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case PULL_DOWN_TO_REFRESH: mList.add((String) msg.obj); mAdapter.notifyDataSetChanged(); mListView.onRefreshComplete(); break; case PULL_UP_TO_REFRESH: mList.add((String) msg.obj); mAdapter.notifyDataSetChanged(); mListView.onRefreshComplete(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 得到控件 mListView = (PullToRefreshListView) findViewById(R.id.pListView); // 给ListView添加假数据 mList = new ArrayList<>(); for (int i = 0; i < 3; i++) { mList.add("这是第" + i + "个Title"); } //设置适配器 mAdapter = new MyAdapter(this, mList); mListView.setAdapter(mAdapter); //设置下拉时显示的文字 ILoadingLayout startLabels = mListView.getLoadingLayoutProxy(); startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示 startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时 startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示 mListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { //下拉刷新执行的代码 @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { //开启一个线程执行刷新步骤 Message message = Message.obtain(); message.what = PULL_DOWN_TO_REFRESH; message.obj = "下拉刷新出来了一个item"; mHandler.sendMessage(message); } //上拉加载执行的代码 @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { //开启一个线程执行刷新步骤 Message message = Message.obtain(); message.what = PULL_UP_TO_REFRESH; message.obj = "上拉加载出来了一个item"; mHandler.sendMessage(message); } }); }}
public class MyAdapter extends BaseAdapter { private Context mContext; private List<String> mList; public MyAdapter(Context pContext, List<String> pList) { mContext = pContext; mList = pList; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int i) { return mList.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder mHolder; if (view == null) { mHolder=new ViewHolder(); view = LayoutInflater.from(mContext).inflate(R.layout.lv_item, null); // mHolder.tvContent= (TextView) view.findViewById(R.id.tvContent); mHolder.tvTitle= (TextView) view.findViewById(R.id.tvTiTle); view.setTag(mHolder); }else { mHolder= (ViewHolder) view.getTag(); } mHolder.tvTitle.setText(mList.get(i)); // mHolder.tvContent.setText(mList.get(i)); return view; } private class ViewHolder{ TextView tvTitle,tvContent; }}
xml代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/pListView" android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrMode="both" /></RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:src="@mipmap/ic_launcher" /> <LinearLayout android:layout_width="match_parent" android:layout_height="78dp" android:layout_marginLeft="6dp" android:layout_marginTop="6dp" android:orientation="vertical"> <TextView android:id="@+id/tvTiTle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="我是标题" android:textColor="#000" android:textSize="20sp" /> <TextView android:id="@+id/tvContent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:text="我是内容" android:textColor="#000" android:textSize="20sp" /> </LinearLayout></LinearLayout>
注意点 :
在设置 ptr:ptrMode="both"属性前需要先引入 xmlns:ptr="http://schemas.android.com/apk/res-auto" 自定义属性
设置下拉时显示的文字:
ILoadingLayout startLabels = mListView.getLoadingLayoutProxy();
startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示
startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时
startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示
设置下拉刷新监听事件
setOnRefreshListener
pull_to_refresh的其他功能:
http://blog.csdn.net/lmj623565791/article/details/38238749
0 0
- ListView下拉刷新与上拉加载
- Android ListView下拉与上拉刷新加载更多(一)
- ListView下拉刷新上拉加载的实现与使用
- SwipeRefreshLayout + ListView 实现仿简书 下拉刷新 与 上拉加载
- listView上拉刷新下拉加载
- Listview 下拉刷新,上拉加载更多
- Android ListView 下拉刷新 上拉加载
- listView上拉刷新下拉加载
- android listview 上拉加载 下拉刷新
- Listview下拉刷新上拉加载更多
- ListView上拉加载下拉刷新
- 下拉刷新,上拉加载更多ListView
- ListView下拉刷新,上拉加载更多
- Android--listview下拉刷新,上拉加载
- ListView下拉刷新上拉加载更多
- Appcan listview上拉加载下拉刷新
- ListView下拉刷新&上拉加载
- listview上拉刷新下拉加载
- Android获取其他包的Context实例,然后调用它的方法,反射!!!
- JAVA读取数据
- Linux基本命令
- HTML学习笔记-a标签+URL+img(三)
- 让理科生沉默,让文科生流泪的综合题详解
- ListView下拉刷新与上拉加载
- JAVA解数独
- PAT 乙级-1003 我要通过!
- Android studio下使用jni(一)
- sqoop介绍
- Java反射机制
- 框架模拟依赖注入
- Linux下minicom的配置和使用方法
- 58. Length of Last Word