//导入Libray 设置依赖 复制布局
//布局
<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" />
//上下拉
package com.example.pulltorefresh; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import com.nostra13.universalimageloader.core.ImageLoader; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { //全局变量 private PullToRefreshListView pull; String path="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10"; private Madapter madapter; private MasayTask masayTask; List<User.NewslistBean> arr=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件 pull =(PullToRefreshListView) findViewById(R.id.pull_refresh_list); //默认下拉 设置BOTH可以上拉 pull.setMode(PullToRefreshBase.Mode.BOTH); //显示数据 new MasayTask().execute(); //适配器 madapter = new Madapter(); pull.setAdapter(madapter); //设置监听PullToRefreshBase.OnRefreshListener2 pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { arr.clear(); new MasayTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { new MasayTask().execute(); } }); } //适配器 class Madapter extends BaseAdapter{ @Override public int getCount() { return arr.size(); } @Override public Object getItem(int position) { return arr.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { User.NewslistBean newslistBean = arr.get(position); ViewHolder vh; if (convertView==null){ convertView= View.inflate(MainActivity.this, R.layout.list, null); vh = new ViewHolder(); vh.tv=(TextView) convertView.findViewById(R.id.tv); vh.img=(ImageView) convertView.findViewById(R.id.img); convertView.setTag(vh); }else{ vh=(ViewHolder) convertView.getTag(); } ImageLoader.getInstance().displayImage(arr.get(position).getPicUrl(),vh.img); vh.tv.setText(arr.get(position).getTitle()); return convertView; } class ViewHolder{ TextView tv; ImageView img; } } //异步 class MasayTask extends AsyncTask<String,Void,String>{ @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); User user = gson.fromJson(s, User.class); List<User.NewslistBean> newslist = user.getNewslist(); arr.addAll(newslist); madapter.notifyDataSetChanged();//刷新适配器 pull.onRefreshComplete(); //让刷新UI隐藏; } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } @Override protected String doInBackground(String... params) { try { URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int responseCode = urlConnection.getResponseCode(); if (responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder builder = new StringBuilder(); String string=""; while ((string=bufferedReader.readLine())!=null){ builder.append(string); } return builder.toString(); } } catch (Exception e) { e.printStackTrace(); } return null; } } }
本文介绍如何使用 PullToRefreshListView 控件实现上下拉刷新功能,包括布局设置、监听器配置及数据加载过程。
1004

被折叠的 条评论
为什么被折叠?



