替代XListView的下拉刷新、上拉加载
2018-02-26 08:25
288 查看
要添加的权限 <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />根布局
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
NetWorkUtils
MainActivity/**
* 接入PullToRefresh
* 1.引入Library
* 2.依赖model
* 3. 布局文件中使用可刷新的控件
* 4. 设置可刷新监听--> mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>()
* 设置可以上拉 mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
*/
public class MainActivity extends AppCompatActivity {
String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";
private ArrayList<String> list = new ArrayList();
private PullToRefreshListView plv; private int page = 0;
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
plv = (PullToRefreshListView) findViewById(R.id.plv);
plv.setMode(PullToRefreshBase.Mode.BOTH);//BOTH 设置支持上下拉
getNetData(0);
// 数据源 从网络请求数据
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
plv.setAdapter(mAdapter); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
/**
* 下拉刷新
* @param pullToRefreshBase
*/
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
list.clear();
getNetData(0); } /**
* 上拉加载
* @param pullToRefreshBase
*/
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
// 请求新数据, 添加到大集合
page++;
getNetData(page); }
});
} /**
* 请求网络数据
* @param page
*/
private void getNetData( int page) {
new MAsyncTask().execute(baseUrl+page);
} class MAsyncTask extends AsyncTask<String,Void,String> { @Override
protected String doInBackground(String... strings) {
return NetWordUtils.getNetjson(strings[0]);
} @Override
protected void onPostExecute(String s) {
super.onPostExecute(s); Gson gson = new Gson();
Product product = gson.fromJson(s, Product.class);
List<Product.DataBean> dataTemp = product.getData(); ArrayList<String> stringList = new ArrayList<>();//初始化一个空的字符串集合
for (int i = 0; i <dataTemp.size() ; i++) {
stringList.add(dataTemp.get(i).getTITLE());
}
list.addAll(stringList);
mAdapter.notifyDataSetChanged();
plv.onRefreshComplete(); // 让刷新头和刷新底部返回
}
}
}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />根布局
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
NetWorkUtils
public static String getNetjson(String urlString){ try { URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET");//若果是get请求可以不用配置; 其他请求必须配置 urlConnection.setConnectTimeout(8000);//设置链接超时间 InputStream inputStream = urlConnection.getInputStream();//获取网络返回的输入流; //可拼接的字符串 StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String temp = ""; while ((temp = bufferedReader.readLine()) != null) { stringBuilder.append(temp); temp = ""; } //这个是网络获取的数据 String data = stringBuilder.toString(); return data; } catch (IOException e) { e.printStackTrace(); } return ""; }
MainActivity/**
* 接入PullToRefresh
* 1.引入Library
* 2.依赖model
* 3. 布局文件中使用可刷新的控件
* 4. 设置可刷新监听--> mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>()
* 设置可以上拉 mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
*/
public class MainActivity extends AppCompatActivity {
String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";
private ArrayList<String> list = new ArrayList();
private PullToRefreshListView plv; private int page = 0;
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
plv = (PullToRefreshListView) findViewById(R.id.plv);
plv.setMode(PullToRefreshBase.Mode.BOTH);//BOTH 设置支持上下拉
getNetData(0);
// 数据源 从网络请求数据
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
plv.setAdapter(mAdapter); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
/**
* 下拉刷新
* @param pullToRefreshBase
*/
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
list.clear();
getNetData(0); } /**
* 上拉加载
* @param pullToRefreshBase
*/
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
// 请求新数据, 添加到大集合
page++;
getNetData(page); }
});
} /**
* 请求网络数据
* @param page
*/
private void getNetData( int page) {
new MAsyncTask().execute(baseUrl+page);
} class MAsyncTask extends AsyncTask<String,Void,String> { @Override
protected String doInBackground(String... strings) {
return NetWordUtils.getNetjson(strings[0]);
} @Override
protected void onPostExecute(String s) {
super.onPostExecute(s); Gson gson = new Gson();
Product product = gson.fromJson(s, Product.class);
List<Product.DataBean> dataTemp = product.getData(); ArrayList<String> stringList = new ArrayList<>();//初始化一个空的字符串集合
for (int i = 0; i <dataTemp.size() ; i++) {
stringList.add(dataTemp.get(i).getTITLE());
}
list.addAll(stringList);
mAdapter.notifyDataSetChanged();
plv.onRefreshComplete(); // 让刷新头和刷新底部返回
}
}
}
相关文章推荐
- listview下拉刷新上拉加载扩展(三)-仿最新版美团外卖
- androdd下拉刷新上拉加载支持listview,scrollview,recyclerview,gridview
- 通过SwipeRefreshLayout实现ListView的上拉加载下拉刷新
- android自定义控件之ListView上拉加载与下拉刷新
- 支持下拉刷新和上划加载更多的自定义RecyclerView(仿XListView效果)
- Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
- 自定义listview下拉刷新上拉加载更多以及与google官方的下拉刷新结合使用
- listview下拉刷新 上拉(滑动分页)加载更多
- ListView的下拉刷新上拉加载以及带列的横向滚动
- listView的下拉刷新、上滑加载跟多以及侧滑弹出菜单
- 下拉刷新和上拉加载的ListView-MutilListView
- 使用安卓自带刷新控件实现ListView的上拉加载和下拉刷新
- listview、scollview、webview的下拉刷新,上拉加载。效果特别好,带刷新时间和图片
- [置顶] Android中ListView下拉刷新上拉加载更多效果实现
- 自定义listView 的下拉刷新上拉加载
- Android UI--自定义ListView(实现下拉刷新+加载更多)
- listview 下拉刷新加载数据
- Android ListView下拉刷新上拉加载更多的实现
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向 推荐
- Android UI--自定义ListView(实现下拉刷新+加载更多)