记一个 结合 listview asynctask json 网络请求的 分页操作
来源:互联网 发布:开淘宝店 编辑:程序博客网 时间:2024/06/07 18:40
public class Fragment1 extends Fragment {private ListView listview;private MyListSdapt adapt;private String path ="http://192.168.11.57/108Project/mypage?page=";private int nowpage=1;private boolean canLoad =false;@Overridepublic View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_layout, null);listview = (ListView) view.findViewById(R.id.listview);//自定义一个listview的适配器adapt = new MyListSdapt();//为listview设置监听,用来操作分页listview.setOnScrollListener(new Mylisterner());//开启一个新异步任务。从网络获取数据new Task().execute(path+nowpage);return view;}//用力设置listview滑动监听class Mylisterner implements OnScrollListener{@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(canLoad==true && OnScrollListener.SCROLL_STATE_IDLE==scrollState){//如果页数大于总页数,则返回if(++nowpage>4){return;}//否则继续加载下一页。这里不是追加,是分页new Task().execute(path+nowpage);}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if(firstVisibleItem+visibleItemCount==totalItemCount){canLoad=true;}else{canLoad=false;}}}//异步操作,从网络获取数据class Task extends AsyncTask<String, Void, List<String>> {List<String> list = null;@Overrideprotected List<String> doInBackground(String... params) {try {HttpClient client = new DefaultHttpClient();HttpGet request = new HttpGet(params[0]);HttpResponse resp = client.execute(request);if (resp.getStatusLine().getStatusCode() == 200) {String jsonObj = EntityUtils.toString(resp.getEntity());//{data,[{key,value},{},{},{}]}JSONArray ja = new JSONObject(jsonObj).getJSONArray("data");list = new ArrayList<String>();for (int i = 0; i < ja.length(); i++) {list.add(ja.getJSONObject(i).getString("city"));System.out.println(ja.getJSONObject(i).getString("city"));}}} catch (ClientProtocolException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();} catch (JSONException e) { e.printStackTrace();}return list;}//在执行完之后设置适配器@Overrideprotected void onPostExecute(List<String> result) {//初始化适配器,将结果传过去adapt.bindData(result);listview.setAdapter(adapt);}}class MyListSdapt extends BaseAdapter {private List<String> list;public void bindData(List<String> list) {this.list = list;}@Overridepublic int getCount() { return list.size();}@Overridepublic Object getItem(int position) { return list.get(position);}@Overridepublic long getItemId(int position) { return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Handle handle = null;if (convertView == null) {convertView = LayoutInflater.from(getActivity()).inflate(R.layout.listview_layout, null);handle = new Handle();convertView.setTag(handle);} else {handle = (Handle) convertView.getTag();}handle.info = (TextView) convertView.findViewById(R.id.info);handle.info.setText(list.get(position));return convertView;}class Handle {TextView info;}}}
0 0
- 记一个 结合 listview asynctask json 网络请求的 分页操作
- JSON 解析 + listView + AsyncTask 的结合使用做个菜谱应用(总结)
- 如何使用ListView实现一个带有网络请求,解析,分页,缓存的公共的List页面来大大的提高工作效率
- ListView请求网络图片的时候使用Asynctask时注意的地方
- 网络请求Json解析显示在listview
- listview+BaseAdapter + AsyncTask异步请求网络 + LruCache缓存图片
- ListView结合AsyncTask获取数据
- AsyncTask请求网络
- AsyncTask网络请求数据
- 【Android实战之旅 001】AsyncTask异步操作网络请求
- android 网络数据请求步骤 一 异步操作 AsyncTask
- ListView和AsyncTask结合实现下拉刷新
- Android-AsyncTask结合Listview 下载显示
- RecyclerView和okhttp结合 实现一个网络请求数据
- ListView结合DataPager实现分页的功能(数据绑定时)
- 5.AsyncTask结合json及xml
- 网络请求数据之AsyncTask
- 封装AsyncTask异步请求网络
- dagger2 让你爱不释手:终结篇
- Broadcast 广播 的接收 和发送 -- Android 学习之路
- opencv 学习
- Servlet 基础
- 【Codeforces Round #376 (Div. 2)】 Codeforces 731B Coupons and Discounts
- 记一个 结合 listview asynctask json 网络请求的 分页操作
- windows下设置sqlplus自动登录脚本login.sql
- mysql安装及操作
- iOS 第9课 导航视图 NavigationView
- 写一段jsp的代码,挺无聊的
- gerrit注册邮箱500错java.lang.IllegalStateException:Can only invoke this method before calling getInstance
- js解析JSON类型的数据
- c/c++笔试题汇总---引用
- 代码重构的艺术