【框架】swiperefreshlayout&OkHttp
2016-04-29 17:15
387 查看
*下载
*listview加载adapter
public class OkHttpUtils { private static OkHttpClient client = new OkHttpClient(); public static void getData(String urlStr, Callback callback) { Request request = new Request.Builder().url(urlStr).build(); Call call = client.newCall(request); call.enqueue(callback); } }
*listview加载adapter
public class MyAdapter extends BaseAdapter { private List<String> list; private Context context; private LayoutInflater inflater; public MyAdapter(Context context, List<String> list) { this.context = context; this.list = list; inflater = LayoutInflater.from(context); } @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) { convertView = inflater.inflate(R.layout.listview_item, null); holder = new ViewHolder(); holder.content = (TextView) convertView.findViewById(R.id.content); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.content.setText(list.get(position)); return convertView; } class ViewHolder { TextView content; } }
public class MainActivity extends AppCompatActivity { private String qiubaiURL = "http://m2.qiushibaike.com/article/list/text?page=%d"; private List<String> list; private ListView listView; private int currentPage = 1; private SwipeRefreshLayout refreshLayout; private Callback callback; private MyAdapter adapter; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { adapter.notifyDataSetChanged(); refreshLayout.setRefreshing(false); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list = new ArrayList<>(); refreshLayout = (SwipeRefreshLayout) findViewById(R.id.srl); listView = (ListView) findViewById(R.id.lv); initData(); adapter = new MyAdapter(this, list); listView.setAdapter(adapter); refreshLayout.setColorSchemeColors(Color.RED, Color.BLUE, Color.GREEN); refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { OkHttpUtils.getData(String.format(qiubaiURL, (++currentPage)), callback); } }); } private void initData() { callback = new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { parseJson(response.body().string()); mHandler.sendEmptyMessage(0); } } }; OkHttpUtils.getData(String.format(qiubaiURL, currentPage), callback); } private void parseJson(String jsonStr) { if (list != null) { list.clear(); } try { JSONObject json = new JSONObject(jsonStr); JSONArray items = json.getJSONArray("items"); for (int i = 0; i < items.length(); i++) { JSONObject data = items.getJSONObject(i); String content = data.getString("content"); list.add(content); } } catch (JSONException e) { e.printStackTrace(); } } }
相关文章推荐
- Tornado源码分析之http服务器篇
- 一次完整的HTTP请求所经历的7个步骤
- deep learning学习笔记(2):深度学习概述:从感知机到深度网络
- 网络基本功:UDP/IP与TCP/IP的区别
- Comet:基于 HTTP 长连接的“服务器推”技术
- java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- HttpClient学习系列 -- 学习总结
- Socket、TCP/IP、HTTP、FTP及网络编程
- 实时的神经网络:Faster-RCNN技术分析
- Java网络编程-单一socket
- 创建多线程的HttpClient
- 网络制式总结
- 本地YUM源
- Unity网络教程翻译(二)如何使用NetworkManager
- 《Deep Learning》译文 第一章 前言(下) 神经网络的变迁与称谓的更迭
- 浅谈httpclient
- .NET中使用Redis:http://www.cnblogs.com/yangecnu/p/Introduct-Redis-in-DotNET.html
- 网络学习
- URLConnection and HTTPClient的比较
- HttpClient4.X 升级 入门 + http连接池使用