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();
}
}
}