图片加载显示在listview上
来源:互联网 发布:mac怎么装千牛 编辑:程序博客网 时间:2024/05/16 02:25
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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.example.imageload.bean.MenuInfo;
import com.example.imageload.utils.StreamTools;
import com.google.gson.Gson;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
lv = (ListView) findViewById(R.id.lv);
//请求数据
"key=ff00d7339861c7fd7d5b54b16b76422a&menu=" +
URLEncoder.encode("秘制红烧肉", "utf-8"));
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 请求菜谱信息数据的路径
* @param path
*/
private void getMenuInfo(String path){
//异步
new AsyncTask<String,Void,String>(){
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null){
//解析服务器给我们响应的json数据
Gson gson = new Gson();
MenuInfo menuInfo = gson.fromJson(s, MenuInfo.class);
List<MenuInfo.ResultBean.DataBean.StepsBean> steps = menuInfo.getResult().getData().get(0).getSteps();
//取出数据,使用ListView展示
lv.setAdapter(new MyBaseAdapter(steps));
}
}
@Override
protected String doInBackground(String... params) {
try {
String path = params[0];
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
//等待服务器响应
int code = connection.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
InputStream is = connection.getInputStream();
String json = StreamTools.readFromNetWork(is);
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(path);
}
//适配器
class MyBaseAdapter extends BaseAdapter{
this.steps = steps;
}
@Override
public int getCount() {
return steps != null ? steps.size() : 0;
}
@Override
public Object getItem(int position) {
return steps.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = convertView.inflate(MainActivity.this,R.layout.item,null);
}
ImageView ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
TextView tvContent = (TextView) convertView.findViewById(R.id.tvContent);
//设置相应控件显示信息
tvContent.setText(steps.get(position).getStep());
//加载图片
loadImage(steps.get(position).getImg(),ivIcon);
return convertView;
}
/**
* 图片加载
*/
private void loadImage(String path, final ImageView ivIcon){
new AsyncTask<String,Void,Bitmap>(){
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
//UI线程,UI操作这个放法做
//判断bitmap是否为空,如果不为空,则加载图片,否则给当前这个Item设置一个默认的图片
if (bitmap != null){
ivIcon.setImageBitmap(bitmap);
}else{
ivIcon.setImageResource(R.mipmap.ic_launcher);
}
}
@Override
protected Bitmap doInBackground(String... params) {
try {
String path = params[0];
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
//服务器响应
int code = connection.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
InputStream is = connection.getInputStream();
return BitmapFactory.decodeStream(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(path);
}
}
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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.example.imageload.bean.MenuInfo;
import com.example.imageload.utils.StreamTools;
import com.google.gson.Gson;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
lv = (ListView) findViewById(R.id.lv);
//请求数据
try {
//调用方法
"key=ff00d7339861c7fd7d5b54b16b76422a&menu=" +
URLEncoder.encode("秘制红烧肉", "utf-8"));
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 请求菜谱信息数据的路径
* @param path
*/
private void getMenuInfo(String path){
//异步
new AsyncTask<String,Void,String>(){
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null){
//解析服务器给我们响应的json数据
Gson gson = new Gson();
MenuInfo menuInfo = gson.fromJson(s, MenuInfo.class);
List<MenuInfo.ResultBean.DataBean.StepsBean> steps = menuInfo.getResult().getData().get(0).getSteps();
//取出数据,使用ListView展示
lv.setAdapter(new MyBaseAdapter(steps));
}
}
@Override
protected String doInBackground(String... params) {
try {
String path = params[0];
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
//等待服务器响应
int code = connection.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
InputStream is = connection.getInputStream();
String json = StreamTools.readFromNetWork(is);
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(path);
}
//适配器
class MyBaseAdapter extends BaseAdapter{
private List<MenuInfo.ResultBean.DataBean.StepsBean> steps;
this.steps = steps;
}
@Override
public int getCount() {
return steps != null ? steps.size() : 0;
}
@Override
public Object getItem(int position) {
return steps.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = convertView.inflate(MainActivity.this,R.layout.item,null);
}
ImageView ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
TextView tvContent = (TextView) convertView.findViewById(R.id.tvContent);
//设置相应控件显示信息
tvContent.setText(steps.get(position).getStep());
//加载图片
loadImage(steps.get(position).getImg(),ivIcon);
return convertView;
}
/**
* 图片加载
*/
private void loadImage(String path, final ImageView ivIcon){
new AsyncTask<String,Void,Bitmap>(){
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
//UI线程,UI操作这个放法做
//判断bitmap是否为空,如果不为空,则加载图片,否则给当前这个Item设置一个默认的图片
if (bitmap != null){
ivIcon.setImageBitmap(bitmap);
}else{
ivIcon.setImageResource(R.mipmap.ic_launcher);
}
}
@Override
protected Bitmap doInBackground(String... params) {
try {
String path = params[0];
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
//服务器响应
int code = connection.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
InputStream is = connection.getInputStream();
return BitmapFactory.decodeStream(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(path);
}
}
阅读全文
0 0
- 图片加载显示在listview上
- BitMap高效显示策略(二):在ListView上异步加载网络图片
- 在ListView 的Column Header上显示任意图片
- 在ListView上显示带有图片的提示信息
- 在ListView上显示带有图片的提示信息
- 获取网络上的图片 显示在listview上面
- 异步加载图片,显示listview中的图片
- Android ListView异步加载网络图片显示
- Android ListView图片异步加载显示
- Android ListView图片异步加载显示
- Android ListView图片异步加载显示
- ListView分页显示 上拉加载更多
- listview异步加载图片,上拉刷新
- listView显示保存在服务器的图片,不是网页上的图片
- 获取服务器图片显示到listview上
- 在按钮上加载图片
- QT美化之图片的加载和图片在控件上的显示
- IOS从网络上异步加载一系列的图片并显示在tableview上的例子
- Springmvc视图和视图解析器(四)
- Hbase之插入数据
- Android中常用的选择图像,跟换图像等(图像放大缩小等)
- OpenJ_POJ
- iOS UITextField输入手机号时自动添加空格
- 图片加载显示在listview上
- 编程点滴
- Redis探索之旅(2)- 在Windows下搭建单实例Redis服务器
- Android将list数据通过LitePal保存到本地(集合保存到本地)
- bzoj 2733 splay+启发式合并
- android 窗口式activity
- 倍增lca
- 找寻数组中重复的元素
- bootstrap基本显示页面