首页 > 移动开发 > Android开发之LisitView的图文并排效果实现(源代码分享)

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

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

MainActivity的代码

[java]

  1. package com.example.e13_listview3;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5.   
  6. import android.os.AsyncTask;  
  7. import android.os.Bundle;  
  8. import android.app.Activity;  
  9. import android.app.ProgressDialog;  
  10. import android.graphics.Bitmap;  
  11. import android.graphics.BitmapFactory;  
  12. import android.util.Log;  
  13. import android.view.LayoutInflater;  
  14. import android.view.Menu;  
  15. import android.view.View;  
  16. import android.view.ViewGroup;  
  17. import android.widget.BaseAdapter;  
  18. import android.widget.ImageView;  
  19. import android.widget.ListView;  
  20. import android.widget.TextView;  
  21.   
  22. public class MainActivity extends Activity {  
  23.   
  24.     private ListView listView;  
  25.     private MyAdapter adapter;  
  26.     private ProgressDialog dialog; //创建一个进度条  
  27.     private byte[] data;  
  28.     private final static String PATH = "http://111.0.166.84:8080/http/";  
  29.   
  30.     @Override  
  31.     protected void onCreate(Bundle savedInstanceState) {  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.activity_main);  
  34.         listView = (ListView) this.findViewById(R.id.listView1);  
  35.         adapter = new MyAdapter();  
  36.         dialog = new ProgressDialog(MainActivity.this);  
  37.         dialog.setTitle("正在下载");  
  38.         dialog.setMessage("客官,请稍后.....");  
  39.         new MyTask().execute(PATH);  
  40.   
  41.     }  
  42.   
  43.     class MyTask extends AsyncTask<String, Void, List<HashMap<String, Object>>> {  
  44.         private List<HashMap<String, Object>> list;  
  45.   
  46.         @Override  
  47.         protected void onPreExecute() {  
  48.             // TODO Auto-generated method stub  
  49.             dialog.show();  
  50.             super.onPreExecute();  
  51.         }  
  52.   
  53.         @Override  
  54.         protected List<HashMap<String, Object>> doInBackground(String... params) {  
  55.             // TODO Auto-generated method stub  
  56.             //通过异步任务下载图片  
  57.             list = CitySource.getList();  
  58.             String name = (String) list.get(0).get("view");  
  59.             data = HttpUtils.sendPostMethod(params[0] + name + ".jpg");  
  60.             Log.i("info""--------->" + PATH + name + ".jpg");  
  61.             return list;  
  62.         }  
  63.   
  64.         @Override  
  65.         protected void onPostExecute(List<HashMap<String, Object>> result) {  
  66.             // TODO Auto-generated method stub  
  67.             adapter.setList(result);  
  68.             //如果数据有更新,该方法会自动更新listview  
  69.             adapter.notifyDataSetChanged();  
  70.             listView.setAdapter(adapter);  
  71.             dialog.dismiss();  
  72.             super.onPostExecute(result);  
  73.         }  
  74.   
  75.     }  
  76.   
  77.     @Override  
  78.     public boolean onCreateOptionsMenu(Menu menu) {  
  79.         // Inflate the menu; this adds items to the action bar if it is present.  
  80.         getMenuInflater().inflate(R.menu.main, menu);  
  81.         return true;  
  82.     }  
  83.   
  84.     public class MyAdapter extends BaseAdapter {  
  85.         private List<HashMap<String, Object>> list;  
  86.   
  87.         public List<HashMap<String, Object>> getList() {  
  88.             return list;  
  89.         }  
  90.   
  91.         public void setList(List<HashMap<String, Object>> list) {  
  92.             this.list = list;  
  93.         }  
  94.   
  95.         @Override  
  96.         public int getCount() {  
  97.             // TODO Auto-generated method stub  
  98.             return list.size();  
  99.         }  
  100.   
  101.         @Override  
  102.         public Object getItem(int arg0) {  
  103.             // TODO Auto-generated method stub  
  104.             return list.get(arg0);  
  105.         }  
  106.   
  107.         @Override  
  108.         public long getItemId(int arg0) {  
  109.             // TODO Auto-generated method stub  
  110.             return arg0;  
  111.         }  
  112.   
  113.         @Override  
  114.         public View getView(int position, View convertView, ViewGroup viewGroup) {  
  115.             // TODO Auto-generated method stub  
  116.             View view = null;  
  117.             if (convertView == null) {  
  118.                //填充布局文件,仅在第一次启动的时候系统会调用该方法  
  119.                 view = LayoutInflater.from(MainActivity.this).inflate(  
  120.                         R.layout.item_list, null);  
  121.             } else {  
  122.                 view = convertView;  
  123.             }  
  124.             Log.i("info""-------->"+view);  
  125.             TextView text = (TextView) view.findViewById(R.id.textView1);  
  126.             ImageView imageView = (ImageView) view  
  127.                     .findViewById(R.id.imageView1);  
  128.             text.setText((CharSequence) list.get(position).get("name"));  
  129.             Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);  
  130.             imageView.setImageBitmap(bm);  
  131.             return view;  
  132.         }  
  133.   
  134.     }  
  135.   
  136. }  


HttpUtiles获得网络连接

[java]

  1. package com.example.e13_listview3;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import org.apache.http.HttpResponse;  
  6. import org.apache.http.client.ClientProtocolException;  
  7. import org.apache.http.client.HttpClient;  
  8. import org.apache.http.client.methods.HttpPost;  
  9. import org.apache.http.impl.client.DefaultHttpClient;  
  10. import org.apache.http.util.EntityUtils;  
  11.   
  12. public class HttpUtils {  
  13.     public static byte[] sendPostMethod(String url){  
  14.         byte[] result=null;  
  15.         HttpPost httpPost=new HttpPost(url);  
  16.         HttpClient client=new DefaultHttpClient();  
  17.         try {  
  18.             HttpResponse httpResponse=client.execute(httpPost);  
  19.             result=EntityUtils.toByteArray(httpResponse.getEntity());  
  20.         } catch (ClientProtocolException e) {  
  21.             // TODO Auto-generated catch block  
  22.             e.printStackTrace();  
  23.         } catch (IOException e) {  
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace();  
  26.         }  
  27.           
  28.           
  29.         return result;  
  30.           
  31.     }  
  32. }  


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

[java]

  1. package com.example.e13_listview3;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6.   
  7. public class CitySource {  
  8.       
  9.     public static List<HashMap<String, Object>> getList(){  
  10.         List<HashMap<String, Object>> list=new ArrayList<HashMap<String,Object>>();  
  11.         HashMap<String, Object> map=new HashMap<String, Object>();  
  12.         map.put("name""杭州");  
  13.         map.put("view""hangzhou");  
  14.         HashMap<String, Object> map1=new HashMap<String, Object>();  
  15.         map1.put("name""杭州");  
  16.         map1.put("view""hangzhou");  
  17.         list.add(map);  
  18.         list.add(map1);  
  19.         return list;  
  20.     }  
  21.   
  22. }  

本文固定链接: http://www.devba.com/index.php/archives/5356.html | 开发吧

报歉!评论已关闭.