Android studio请求网络数据ListView异步加载展示文字条目 ImageLoadler加载图片
来源:互联网 发布:js 格式化数字 前补零 编辑:程序博客网 时间:2024/04/19 09:25
主函数布局是一个ListView
item布局是TextView和ImageView 数量的多少视情况而定
再写一个网络请求数据的类 最后面有代码: ”urlConnection 请求数据类的封装“
类名一定要一样
封装数据类 还有别忘了依赖和权限
依赖:
imageloader compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’
gson compile 'com.google.code.gson:gson:2.6.2'
Tablayout compile 'com.android.support:design:26+'
pulltorefresh compile 'com.android.support:support-v4:23.3.0' 或 compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
Banner无限轮播 compile 'com.youth.banner:banner:1.4.9'
权限:
<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"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
主页面 MainActivity
package com.example.myapplication;import android.graphics.Bitmap;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;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.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView lv; String urlTotal = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1"; private MAdapter mAdapter; private List<News.NewslistBean> list; private String imageUrl=""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); initData(); } private void initData() { new MJsonAsyncTask().execute(urlTotal); } class MJsonAsyncTask extends AsyncTask<String, Void, String> { public MJsonAsyncTask() { super(); } //主线程可以更新ui @Override protected void onPostExecute(String s) { super.onPostExecute(s); News news = new Gson().fromJson(s, News.class); list = news.getNewslist(); mAdapter = new MAdapter(); lv.setAdapter(mAdapter); } //这个回调方法是子线程; @Override protected String doInBackground(String... strings) { //取第0个元素,就是url; String netjson = NetWordUtils.getNetjson(strings[0]);//调用网络请求工具类 return netjson; } } class MAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View containerView, ViewGroup viewGroup) { View view = View.inflate(MainActivity.this, R.layout.item, null); TextView tv_name = (TextView) view.findViewById(R.id.tv); ImageView iv = (ImageView) view.findViewById(R.id.iv); tv_name.setText(list.get(i).getTitle()); /** * getView方法每个条目显示的时候都会调用,所以我们在这个请求图片,并设置 * 把图片url传递给asyncTask */ //new MAsyncTaskImage(iv).execute(list.get(i).getPicUrl()); ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(),iv); // Log.d("wyy",list.get(i).getPicUrl()); return view; } }}
mapp类(清单文件中记得写name=".mapp");
package com.example.myapplication;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by DELL- on 2017/11/6. */public class mapp extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build();//开始构建 ImageLoader.getInstance().init(config);//全局初始化此配置 }}清单文件:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <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"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application android:name=".mapp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
NetWordUtils类(工具类)
package com.example.myapplication;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.Log;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * 2017-09-27. */public class NetWordUtils { private static String tag = "NetWordUtils"; /** * 获取网络json * * @param urlString * @return */ 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(); Log.e(tag, "getData: " + data); return data; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; }}
阅读全文
0 0
- Android studio请求网络数据ListView异步加载展示文字条目 ImageLoadler加载图片
- 异步加载数据,图片,展示到listView
- ListView多条目展示 请求网络数据 和图片
- Android 解决ListView异步加载网络数据(图片文字)出现位置错乱以及优化ListView的加载
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- ImageLoader+网络请求+ListView多条目加载
- listview多条目加载(网络请求)
- Android ListView异步加载网络图片显示
- Android Listview异步动态加载网络图片
- Android ListView异步加载网络图片
- Android ListView异步加载网络图片
- listview 异步加载 网络图片
- Android异步加载学习笔记之二:实现ListView中的图片数据从网络加载
- 网络异步请求图片加载
- Android异步加载获取网络数据(图片)
- ListView异步加载网络数据
- ListView异步加载网络数据
- Android ListView加载网络数据和图片
- 一套Windows上C/C++的编码转换函数
- [POJ2407]Relatives
- [App] rhel7 下安装 Heartbeat 3.0.6
- jdbc连接hive的问题
- ubuntu16.04 安装tensorflow
- Android studio请求网络数据ListView异步加载展示文字条目 ImageLoadler加载图片
- Spring Bean详解
- 说清楚了sync.pool的文章
- Android OOM
- C语言的基本输入与输出函数(全解)
- java中如何理解继承和接口的实际用途
- 分词资料
- python:浅析python中__name__ = "__main__"的作用
- Python数据挖掘建模 chapter_5 神经网络算法