此篇博客通过模拟连接MyEclipse搭建的服务器下载图片,实现在实际开发中的场景运用。

MainActivity的代码

package com.example.e13_listview3;import java.util.HashMap;
import java.util.List;import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;public class MainActivity extends Activity {private ListView listView;private MyAdapter adapter;private ProgressDialog dialog; //创建一个进度条private byte[] data;private final static String PATH = "http://111.0.166.84:8080/http/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) this.findViewById(R.id.listView1);adapter = new MyAdapter();dialog = new ProgressDialog(MainActivity.this);dialog.setTitle("正在下载");dialog.setMessage("客官,请稍后.....");new MyTask().execute(PATH);}class MyTask extends AsyncTask<String, Void, List<HashMap<String, Object>>> {private List<HashMap<String, Object>> list;@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubdialog.show();super.onPreExecute();}@Overrideprotected List<HashMap<String, Object>> doInBackground(String... params) {// TODO Auto-generated method stub//通过异步任务下载图片list = CitySource.getList();String name = (String) list.get(0).get("view");data = HttpUtils.sendPostMethod(params[0] + name + ".jpg");Log.i("info", "--------->" + PATH + name + ".jpg");return list;}@Overrideprotected void onPostExecute(List<HashMap<String, Object>> result) {// TODO Auto-generated method stubadapter.setList(result);//如果数据有更新,该方法会自动更新listviewadapter.notifyDataSetChanged();listView.setAdapter(adapter);dialog.dismiss();super.onPostExecute(result);}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public class MyAdapter extends BaseAdapter {private List<HashMap<String, Object>> list;public List<HashMap<String, Object>> getList() {return list;}public void setList(List<HashMap<String, Object>> list) {this.list = list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int position, View convertView, ViewGroup viewGroup) {// TODO Auto-generated method stubView view = null;if (convertView == null) {//填充布局文件,仅在第一次启动的时候系统会调用该方法view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_list, null);} else {view = convertView;}Log.i("info", "-------->"+view);TextView text = (TextView) view.findViewById(R.id.textView1);ImageView imageView = (ImageView) view.findViewById(R.id.imageView1);text.setText((CharSequence) list.get(position).get("name"));Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);imageView.setImageBitmap(bm);return view;}}}

HttpUtiles获得网络连接

package com.example.e13_listview3;import java.io.IOException;import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;public class HttpUtils {public static byte[] sendPostMethod(String url){byte[] result=null;HttpPost httpPost=new HttpPost(url);HttpClient client=new DefaultHttpClient();try {HttpResponse httpResponse=client.execute(httpPost);result=EntityUtils.toByteArray(httpResponse.getEntity());} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}
}

CitySource模拟远程服务器的列表数据

package com.example.e13_listview3;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;public class CitySource {public static List<HashMap<String, Object>> getList(){List<HashMap<String, Object>> list=new ArrayList<HashMap<String,Object>>();HashMap<String, Object> map=new HashMap<String, Object>();map.put("name", "杭州");map.put("view", "hangzhou");HashMap<String, Object> map1=new HashMap<String, Object>();map1.put("name", "杭州");map1.put("view", "hangzhou");list.add(map);list.add(map1);return list;}}

Android开发之LisitView的图文并排效果实现(源代码分享)相关推荐

  1. Android开发之Serializable 和 Parcelable的区别(源代码分享)

    android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable. 一 序列化原因: 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.通过序 ...

  2. Android开发之Service与Activity数据交互(源代码分享)

    Service想要与Activity进行数据交互,首先Activity先得绑定Service.bound service是service 的实现,它允许其他应用程序绑定到它并与之交互.要提供bound ...

  3. android studio输入框下划线,Android开发之TextView的下划线添加

    Android开发之TextView高级应用 Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大 ...

  4. Android 开发之Windows环境下Android Studio安装和使用教程(图文详细步骤)

    鉴于谷歌最新推出的Android Studio备受开发者的推崇,所以也跟着体验一下. 一.介绍Android Studio  Android Studio 是一个Android开发环境,基于Intel ...

  5. Android studio实现底部导航,Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果...

    BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退. ...

  6. Android开发之QQ空间效果(QQ空间下拉图片放大,松手后回弹)

    Android开发之QQ空间效果(QQ空间下拉图片放大,松手后回弹) 腾讯QQ空间的下拉图片放大,松手后回弹的效果带来的视觉差异效果让许多移动开发者心动不已,经本人一段时间的研究,终于实现了该视差效果 ...

  7. Android开发之TextView高级应用

    Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...

  8. android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解

    本文实例讲述了Android开发之PopupWindow创建弹窗.对话框的方法.分享给大家供大家参考,具体如下: 简介: PopupWindow 可创建类似对话框风格的窗口 效果: 使用方法: 使用P ...

  9. Android开发之SpannableString具体解释

    在实际的应用开发过程中常常会遇到.在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等. 普通情况下,TextView中的文本都是一个样式.对于类似的情况.能够 ...

最新文章

  1. 图灵11月书讯:大约在冬季
  2. java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core
  3. ALV 动态显示列Demo
  4. 数据库密码过期 怎么修改
  5. 太神奇了!使用C#实现自动核验健康码:(2)OCR识别
  6. 快速打造一个MINI自动发布系统
  7. 给微软的依赖注入框架写一些扩展方法
  8. 51单片机产生1Hz-5kHz可调占空比方波
  9. eclipse tomcat cannot create a server using the...
  10. mysql命令 -a_mysql常用命令
  11. 计算机管理软件禁止玩游戏,如何禁止电脑指定程序不能运行 怎么屏蔽QQ或游戏运行提高办公效率...
  12. js获取唯一设备码_前端JS获取设备IP地址和唯一标识
  13. 联盛德 HLK-W806 (十): 在 CDK IDE开发环境中使用WM-SDK-W806
  14. php红包退回通知,PHP红包算法
  15. 悲欢离合是红尘,坎坎坷坷是人生
  16. Android开发:隐藏和显示底部导航栏
  17. 学生党技术博客公众号第1月总结:收入|学习|定位规划|是否该接广告?
  18. 2017秋招知识点小记(C/C++)
  19. 怎样去学习——思维导图
  20. rhythmbox歌词插件之鲁班歌词

热门文章

  1. 统计app用户在线时长_优质的APP推广渠道,应该如何筛选?
  2. 一个数三位立方和相加等于本身_【题解信奥】打印水仙花数(粉丝求助)
  3. mysql转换double_MySQL 字符串转in/double类型——CAST/CONVERT函数的用法
  4. arm remapping控制输入_解析机器视觉中运动控制卡与PLC的区别
  5. c++语言中如何写入文件,C++:在多线程程序中写入文件
  6. opencv中resize函数
  7. oracle雾化试图_Oracle创建物化视图
  8. matlab 电磁兼容仿真软件,EMC Studio免费版
  9. Linux 批量依赖库拷贝(ldd)
  10. 第五章 Python函数你知多少