请求网络,绘制ListView
来源:互联网 发布:linux下新建文件命令 编辑:程序博客网 时间:2024/06/16 21:47
public class MainActivity extends AppCompatActivity { private ListView lv; private List<News.DataBean> dataList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件 lv = (ListView) findViewById(R.id.lv); //获取数据 getData(); } class MyAdapter extends BaseAdapter { @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int i) { return dataList.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { News.DataBean dataBean = dataList.get(i); ViewHolder holder; if (view == null) { holder = new ViewHolder(); view = View.inflate(MainActivity.this, R.layout.list_item, null); view.findViewById(R.id.img); holder.img = (ImageView) view.findViewById(R.id.img); holder.title = (TextView) view.findViewById(R.id.title); holder.neirong = (TextView) view.findViewById(R.id.neirong); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.title.setText(dataBean.getNews_title()); holder.neirong.setText(dataBean.getNews_summary()); //设置图片,图片请求网络,使用异步 new MyAsyncTask(holder.img).execute(dataBean.getPic_url()); return view; } class ViewHolder { ImageView img; TextView title; TextView neirong; } } class MyAsyncTask extends AsyncTask<String, Void, Bitmap> { private final ImageView img; private Bitmap bitmap; //有参构造把imageView public MyAsyncTask(ImageView ima) { this.img = ima; } //执行网络之前 @Override protected void onPreExecute() { super.onPreExecute(); } //请求完成之后,更新ui @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); img.setImageBitmap(bitmap); } //执行网络请求,耗时任务 @Override protected Bitmap doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = urlConnection.getInputStream(); // bitmap = BitmapFactory.decodeStream(inputStream); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bitmap; } //网路请求进度 @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } } //创建handler Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 1) { String string = (String) msg.obj; //解析json串 Gson gson = new Gson(); News news = gson.fromJson(string, News.class); dataList = news.getData(); //创建适配器 MyAdapter myAdapter = new MyAdapter(); //连接适配器 lv.setAdapter(myAdapter); //更新适配器 myAdapter.notifyDataSetChanged(); } } }; private String getData() { //请求网络得创建线程 new Thread() { @Override public void run() { super.run(); try { //获取网址 URL url = new URL("http://api.expoon.com/AppNews/getNewsList/type/1/p/1"); //打开网址 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // int responseCode = urlConnection.getResponseCode(); //判断是否连接成功 if (responseCode == 200) { //获取字节流 InputStream inputStream = urlConnection.getInputStream(); //读取字节流 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String string = ""; while ((string = bufferedReader.readLine()) != null) { stringBuilder.append(string); } //通过Handler发送 Message message = handler.obtainMessage(); message.obj = stringBuilder.toString(); message.what = 1; handler.sendMessage(message); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }.start(); return null; }}
阅读全文
0 0
- 请求网络,绘制ListView
- 简单网络请求+ListView
- 网络请求展示到listview
- listview嵌套listview,同时进行网络请求
- 网络请求(viewPager,Fragment,ListView)
- 网络请求fetch和组件ListView
- ImageLoader+网络请求+ListView多条目加载
- 网络请求Json解析显示在listview
- listview多条目加载(网络请求)
- Android_请求网络数据展示到Listview
- 网络请求+ListView展示数据+数据库
- ListView请求网络数据的使用
- OkHttp请求网络数据,并listview展示
- 网络请求并展示到ListView上
- 请求网络加载ListView Asynctack后台线程
- 文章标题 listview网络请求数据展示
- Retrofit 请求网络数据 并适配到 ListView
- SlidingMenu ViewPager Fragment GSON 网络解析 网络请求 ListView
- LeetCode· 39. Combination Sum
- new jazz music club could be a tremendously profitable enterprise
- matlab2c使用c++实现matlab函数系列教程- poly函数
- 算法详解【冒泡排序】
- Java之面向对象
- 请求网络,绘制ListView
- 1801:斜率计算
- linux内核学习笔记1
- WOJ1115-An Excel-lent Problem
- 背包问题模板
- 反转单向链表
- vb.net 教程 20-2 base64图片转换 1
- hdu 1238 substring
- gitlab 权限设置