结果截图:

Android之图文混排 (二)源代码_第1张图片

包含三个类文件:CommonUri.java 、DownIoadImage.java 、 MainActivity.java

两个layout文件:activity_main.xml     item.xml

activity_main.xml文件:

        

item.xml文件:

<?xml version="1.0" encoding="utf-8"?>                



CommonUri类用于存储Uri

public class CommonUri {public static String PRODUCT_URL = "";public static String PRODUCT_IMG = "";}


DownloadImage类用于从服务器下载图片


public class DownloadImage {private String image_path;public DownloadImage(String image_path) {// TODO Auto-generated constructor stubthis.image_path = image_path;}public void loadImage(final ImageCallBack callBack){final Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);callBack.getDrawable((Drawable)msg.obj);}};new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtry {Drawable drawable = Drawable.createFromStream(new URL(image_path).openStream(), "");Message message = Message.obtain();message.obj = drawable;handler.sendMessage(message);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}).start();}//接口的回调方式public interface ImageCallBack{public void getDrawable(Drawable drawable);  }}



MainActivity类:


//图文混排,先保证文字出现public class MainActivity extends Activity {private MyAdapter adapter = null;private ListView listView = null;private ProgressDialog dialog = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView)findViewById(R.id.listView1);adapter  = new MyAdapter(this);dialog = new ProgressDialog(this);dialog.setTitle("提示下载信息");dialog.setMessage("正在下载,请稍后...");new MyTask().execute(CommonUri.PRODUCT_URL);}public class MyAdapter extends BaseAdapter{Context context = null;private LayoutInflater layoutInflater ;private List > list;public MyAdapter(Context context){this.context = context;layoutInflater = layoutInflater.from(context);}public void setData(List > list){this.list = list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubView view = null;if(convertView == null){view = layoutInflater.inflate(R.layout.item, null);}elseview = convertView;TextView name = (TextView)findViewById(R.id.textView1);TextView address = (TextView)findViewById(R.id.textView2);TextView price = (TextView)findViewById(R.id.textView3);name.setText(list.get(position).get("proname").toString());//产品名address.setText(list.get(position).get("proaddress").toString());//产品地址price.setText(list.get(position).get("proprice").toString());//产品价格final ImageView imageView = (ImageView)findViewById(R.id.imageView1);DownloadImage downloadImage = new DownloadImage(CommonUri.PRODUCT_IMG + list.get(position).get("proimage").toString());downloadImage.loadImage(new DownloadImage.ImageCallBack() {@Overridepublic void getDrawable(Drawable drawable) {// TODO Auto-generated method stubimageView.setImageDrawable(drawable);}});return view;//imageView.setImageBitmap(bm);实际开发中,最好选用Bitmap}}public class MyTask extends AsyncTask>>{@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();dialog.show();}@Overrideprotected void onPostExecute(List> result) {// TODO Auto-generated method stubsuper.onPostExecute(result);dialog.dismiss();adapter.setData(result);listView.setAdapter(adapter);adapter.notifyDataSetChanged();}@Overrideprotected void onProgressUpdate(Void... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}@Overrideprotected List> doInBackground(String... params) {// TODO Auto-generated method stubList> list = new ArrayList>();try {HttpClient client = new DefaultHttpClient();HttpPost  post = new HttpPost(params[0]);HttpResponse response = client.execute(post);if(response.getStatusLine().getStatusCode() == 200){String jsonString = EntityUtils.toString(response.getEntity(), "utf-8");//接下来,对于jsonString进行解析//略......见图////}} catch (Exception e) {e.printStackTrace();}return list;}}}



更多相关文章

  1. 设置android的布局文件的背景颜色为黑色
  2. Android 获取本地所有音频文件
  3. android 读取根目录下的文件或文件夹
  4. Android实现文件保存数据,读取数据
  5. android bitmap保存为文件及读取
  6. mono for android Json 上传文件
  7. android 文件的读取与写入以及TextView
  8. Android Studio编译动态替换清单文件AndroidManifest.xml内容(找

随机推荐

  1. Build android source code 2 -- 下载源
  2. [置顶] android AIDL 进程间通信
  3. android利用matrix对图片中心旋转
  4. Android(安卓)app集成友盟崩溃日志收集
  5. Android上解析Json格式数据
  6. Android(安卓)MD5加密
  7. Android(安卓)语音识别
  8. Android(安卓)一堆会动的控件
  9. Android(安卓)ListView 滚动加载数据
  10. android使用Intent操作拨打号码发送短信