1.第一步:如果你没有pulltorefresh这个插件的包你可以去网上下一个,我这里推荐大家一个网址:www.github.com 进去之后直接搜pull to refresh就可以直接下载了,然后就会存到你的硬件中,记住位置。然后解压,然后打开,找到library文件夹打开,然后赋值路径。
2.第二步:打开androidstudio,然后点击左上角的File,new 一个Import Module,之后在source directory输入你之前赋值的路径。于是他会自动在下面出现一个module name=library。这里介意你最好改了,因为许多插件的名字都有可能叫library。之后就确定一下。
3.第三步:然后,在你需要的module里面引入它,点击你的module,又击,然后在点击 open module setting,然后点击上端的dependencies,然后右上角有个绿色的加号,点击一下,然后出现三个选项,选择module dependency,然后选择你之前引入进来的library。
4.第四步:等加载之后,就会报错,因为library的sdk版本和你androidstudio的sdk版本不一样,所以点击你module中的build.gradle
compileSdkVersion 25 buildToolsVersion "25.0.2"
将这两个代码复制,然后打开你引入进来library的build.gradle,然后将它这两句代码替换成你module中的这两句,之后再try again加载一下。
5:第五步:之后你便可以开始写了,
<com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/ptlv_pull" >只有把那个插件引入进来之后才能写这个下拉刷新的listview
最后,当你运行的时候 又会报个错误,而且它会自动帮你打开一个类(PulltorefreshWebView),之后你找到报错的地方,将FloatMath改成Math,并将前面它返回的类型的值float改成double就可以了。
然后再给大家分享一下 我在java类中实现下拉刷新的源码;
分享一下思路:
1.先根据id找到pulltorefreshListview控件。
2.定一个集合或数组存放数据,也就是你一打开这个界面,就会出来的数据
3.在设置一个适配器,这里我设置了一个简单的arrayAdapter的适配器
4.给控件添加适配器,
5.再给控件设置下拉事件
6.写一个类,继承AsyncTask,这个类则是用来更新数据(doInBackground)和更新界面(onPostExecute)的
7.在下拉事件中引用你所写的那个类。
public class MainActivity extends AppCompatActivity { private PullToRefreshListView ptlv_pull; private List<String> data; private ArrayAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ptlv_pull= (PullToRefreshListView) findViewById(R.id.ptlv_pull); //定义资料: data=new ArrayList<>(); for (int i = 0; i <10 ; i++) { data.add("你是傻逼吗?"+i); } //设置适配器: adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,data); //给控件添加适配器: ptlv_pull.setAdapter(adapter); //给ptlv_pull设置下拉事件: ptlv_pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { new MyTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { } }); } class MyTask extends AsyncTask{ //在后台获取数据 (内部有线程机制) @Override protected Object doInBackground(Object[] params) { for (int i = 0; i <3 ; i++) { data.add(0,"你不是傻逼哦"+i); } try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } //更新UI @Override protected void onPostExecute(Object o) { super.onPostExecute(o); //通知适配器数据发生改变 adapter.notifyDataSetChanged(); //通知ListView已经拉完了 ptlv_pull.onRefreshComplete(); } } }