可装载网络数据的控件
来源:互联网 发布:淘宝触屏版 编辑:程序博客网 时间:2024/06/07 21:08
原理:
很多控件在装载数据时都需要一个Adapter对象,例如在使用Gallery控件时往往会编写一个ImageAdapter。该类时BaseAdapter的子类,在ImageAdapter类中通过getView方法返回显示图像的ImageView对象。
```//建立一个URL对象,用于指定urlURL url = new URL("http://baidu.com");URLConnection conn = url.openConnection();conn.connect();//开始连接InputStream is = conn.getInputStream();//获得网络资源的inputstream ;```
获得了is之后,就可以根据实际的需要按文本或字节流来处理InputStream对象,从网络上获得数据后,可以将这些数据保存在数组或List对象中,然后的步骤就和处理本地数据完全一样。
例子:
1—将网络图像封装在ListView控件中
服务器环境配置
在网站根目录建立一个文件夹,apk,并创建一个list.txt,粘贴过来很多个png,list.txt内容如下:
calendar.png,多功能日历,5
zxyu.png,在线阅读软件,3.5
xxx
xxx
本例的核心是负责处理数据的ApkListAdapter类,该类是BaseAdapter的子类,在构造函数中,获得了List文件中的内容,并在分析文件的内容后将其保存在List< ImageData>中,其中ImageData是ApkListAdapter的内嵌类。
ApkListAdapter类的完整代码如下:
package net.blogjava.mobile;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;import android.app.ListActivity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RatingBar;import android.widget.TextView;public class Main extends ListActivity{ public class ApkListAdapter extends BaseAdapter { private Context context; private LayoutInflater layoutInflater; private String inflater = Context.LAYOUT_INFLATER_SERVICE; private String rootUrl = "http://192.168.17.156/apk/"; private String listUrl = rootUrl + "list.txt"; private List<ImageData> imageDataList = new ArrayList<ImageData>(); class ImageData { public String url; public String applicationName; public float rating;//图像文件的url,应用程序名,评价分数 } private InputStream getNetInputStream(String urlStr) { try { URL url = new URL(urlStr); URLConnection conn = url.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); return is; } catch (Exception e) { } return null; } public ApkListAdapter(Context context) { this.context = context; layoutInflater = (LayoutInflater) context .getSystemService(inflater); try { //获得与list.txt文件相连的InputStream对象 InputStream is = getNetInputStream(listUrl); //必须使用GBK编码,因为list.txt文件使用了这样的编码方式 InputStreamReader isr = new InputStreamReader(is, "GBK"); BufferedReader br = new BufferedReader(isr); String s = null; //开始读取每一行of list.txt while ((s = br.readLine()) != null) { String[] data = s.split(","); if (data.length > 2) { ImageData imageData = new ImageData(); imageData.url = data[0];//设置图像的url Log.d("aa", imageData.url); imageData.applicationName = data[1]; imageData.rating = Float.parseFloat(data[2]); imageDataList.add(imageData);//添加到list对象中 } } is.close(); } catch (Exception e) { // TODO: handle exception } } @Override public int getCount() { return imageDataList.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LinearLayout linearLayout = (LinearLayout) layoutInflater.inflate( R.layout.item, null); ImageView ivLogo = (ImageView) linearLayout .findViewById(R.id.ivLogo); TextView tvApplicationName = ((TextView) linearLayout .findViewById(R.id.tvApplicationName)); TextView tvRating = (TextView) linearLayout .findViewById(R.id.tvRating); RatingBar ratingBar = (RatingBar) linearLayout .findViewById(R.id.ratingbar); tvApplicationName .setText(imageDataList.get(position).applicationName); tvRating .setText(String.valueOf(imageDataList.get(position).rating)); ratingBar.setRating(imageDataList.get(position).rating); try { //从网络上下载相应的图像文件 InputStream is = getNetInputStream(rootUrl + imageDataList.get(position).url); Bitmap bitmap = BitmapFactory.decodeStream(is); is.close(); ivLogo.setImageBitmap(bitmap); } catch (Exception e) { } return linearLayout; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ApkListAdapter apkListAdapter = new ApkListAdapter(this); setListAdapter(apkListAdapter); }}
这里不仅有从网络上获取图片,也有获取文字,这两种方法值得考虑!
2-上传文件
http://download.csdn.net/detail/chengyangyy/8824475
0 0
- 可装载网络数据的控件
- 可实时监视数据的.NET控件
- 关于Android开发完全讲义将网络图像装载到ListView控件的修改
- 数据装载--sqlldr的使用
- [原创]WinForm的DataGrid动态装载控件
- 数据装载
- 装载BPL中的类,数据模块,窗体控件
- Linux内核可装载模块对设备驱动的影响
- 解析 Linux 内核可装载模块的版本检查机制
- rt-thread装载可重定位文件的源码分析
- 解析 Linux 内核可装载模块的版本检查机制
- 解析 Linux 内核可装载模块的版本检查机制
- 解析 Linux 内核可装载模块的版本检查机制
- 解析 Linux 内核可装载模块的版本检查机制
- 解析 Linux 内核可装载模块的版本检查机制
- 解析 Linux 内核可装载模块的版本检查机制
- 解析 Linux 内核可装载模块的版本检查机制
- 解析 Linux 内核可装载模块的版本检查机制
- 轮盘赌算法-Roulette
- 【Dubbo之基本配置和运行(2)】Dubbo zookeeper基本配置和运行
- 关于521的变态问题
- 黑马程序员--Foundation框架基础
- CheckBox记住密码功能
- 可装载网络数据的控件
- java基础知识随笔--数组对象
- 黑马程序员--JAVA基础知识--继承
- MFC 遮罩(透明)
- JNI技术实现(HelloWord)
- 前端工程师的重新定义
- Android5.1(Android N)--APK包的安装、卸载和优化(PackageManagerService)(三)
- GCC编译器和GDB调试器常用选项
- 判断一点是否在三角形的外接圆内