添加依赖库
compile ‘com.github.userswlwork:pull-to-refresh:1.0.0’
添加权限
android:name=”.MyApption”
activity布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/lv"
ptr:ptrDrawable="@drawable/default_ptr_flip"
ptr:ptrAnimationStyle="flip"
ptr:ptrHeaderBackground="#383838"
ptr:ptrHeaderTextColor="#FFFFFF">
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>
</RelativeLayout>
item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:layout_margin="10dp"
>
<ImageView
android:id="@+id/img"
android:layout_width="150dp"
android:layout_height="150dp" />
<TextView
android:id="@+id/tv"
android:layout_marginTop="30dp"
android:layout_marginLeft="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Activity主方法
public class MainActivity extends AppCompatActivity {
List<NewsResult.DatalistBean> list=new ArrayList<>();
private int operType=1;
private String url="http://www.meirixue.com/api.php?c=list&a=index";
private PullToRefreshListView pull;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pull = (PullToRefreshListView) findViewById(plv);
//首先判断有没有连接网络
boolean result= TypeUtils.isConn(this);
if(result){
//进行数据请求
initplv();
Toast.makeText(MainActivity.this,"有网络",Toast.LENGTH_SHORT).show();
}else{
TypeUtils.openNetSettingDg(MainActivity.this);
Toast.makeText(MainActivity.this,"无网络",Toast.LENGTH_SHORT).show();
}
}
public void initplv(){
//1.设置模式 BOTH:支持上拉与下拉 PULL_FROM_START:支持下拉 PULL_FROM_END:支持上拉
pull.setMode(PullToRefreshBase.Mode.BOTH);
//2.设置头尾布局中的文本
ILoadingLayout headerLayout = pull.getLoadingLayoutProxy(true, false);//第一个参数为true,代表设置头部布局中文本
headerLayout.setPullLabel("下拉刷新...");
headerLayout.setRefreshingLabel("正在刷新...");
headerLayout.setReleaseLabel("松开刷新.....");
ILoadingLayout footerLayout = pull.getLoadingLayoutProxy(false, true);//第一个参数为false,代表设置尾部布局中文本
footerLayout.setPullLabel("加载更多...");
footerLayout.setRefreshingLabel("正在加载...");
footerLayout.setReleaseLabel("松开加载.....");
//3.设置上拉与下拉的监听
pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//下拉,刷新回调
operType=1;
inittask();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//上拉,加载
operType=2;
inittask();
}
});
inittask();
}
public void inittask(){
class MyTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(2000);
connection.setReadTimeout(2000);
if (connection.getResponseCode()==200){
InputStream stream = connection.getInputStream();
String s = StreamToString.streamToStr(stream, "utf-8");
return s;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson=new Gson();
NewsResult result = gson.fromJson(s, NewsResult.class);
list .addAll(result.getDatalist());
setMyAdapter();
//关闭尾布局
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
pull.onRefreshComplete();
}
},500);
}
}
new MyTask().execute(url);
}
public void setMyAdapter(){
if (adapter==null){
adapter = new MyAdapter(this,list);
pull.setAdapter(adapter);
}else {
adapter.notifyDataSetChanged();
}
}
}
MyAdapter
public class MyAdapter extends BaseAdapter {
private Context context;
private List<NewsResult.DatalistBean>list;
public MyAdapter(Context context, List<NewsResult.DatalistBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder holder;
if (convertView==null){
holder=new viewHolder();
convertView=View.inflate(context,R.layout.item,null);
holder.tv=(TextView) convertView.findViewById(R.id.tv);
holder.img=(ImageView) convertView.findViewById(R.id.img);
convertView.setTag(holder);
}else {
holder=(viewHolder)convertView.getTag();
}
holder.tv.setText(list.get(position).getCourse_name());
String pic = list.get(position).getCourse_pic();
ImageLoader.getInstance().displayImage(pic,holder.img, ImageUtils.getinitimage());
return convertView;
}
class viewHolder{
ImageView img;
TextView tv;
}
}
MyApption
public class MyApption extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageUtils.initimageLoader(this);
}
}