博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络编程综合案例
阅读量:6416 次
发布时间:2019-06-23

本文共 4454 字,大约阅读时间需要 14 分钟。

  • 综合案例
    • 案例设计到知识点:listview —>baseAdapter tomcat xml(xml解析) url httpurlconnection 开线程 handler 
    • 案例开发的流程 
    • 开发这样一个程序 最少3个人 一个android客户端,一个UI设计师,做服务器开发人员. 产品经理(微信). 
    • 代码实现过程: 
    • 画UI
    • 搭建服务器 去服务器取数据
private void initData() {        new Thread(new Runnable() {            @Override            public void run() {                try {                    String path = "http://47.105.71.243:8080/resource/news.xml";                    URL url = new URL(path);                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();                    int code = conn.getResponseCode();                    if (code == 200) {                        InputStream is = conn.getInputStream();                        mList = NewsXmlUtils.pasreXml(is);                        Log.d(TAG, "run: " + mList.size());                        if (myAdapter!=null){                            myAdapter.notifyDataSetChanged();                        }else{                            myAdapter = new myAdapter();                            mLv.setAdapter(myAdapter);                        }                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }).start();    }
    • 对数据进行解析 xml解析
public static List
pasreXml(InputStream in) { List
lists = null; News news = null; XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(in, "utf-8"); int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_TAG: if ("channel".equals(parser.getName())) { lists = new ArrayList
(); } else if ("item".equals(parser.getName())) { news = new News(); } else if ("title".equals(parser.getName())) { news.setTitle(parser.nextText()); } else if ("description".equals(parser.getName())) { news.setDescription(parser.nextText()); } else if ("image".equals(parser.getName())) { news.setImagepath(parser.nextText()); } else if ("type".equals(parser.getName())) { news.setType(parser.nextText()); } else if ("comment".equals(parser.getName())) { news.setComment(parser.nextText()); } break; case XmlPullParser.END_TAG: if ("item".equals(parser.getName())) { lists.add(news); } break; } eventType = parser.next(); } return lists; } catch (Exception e) { e.printStackTrace(); return null; } }

 

    • 定义数据适配器
class myAdapter extends BaseAdapter {        @Override        public int getCount() {            if (mList == null) {                return 0;            }            return mList.size();        }        @Override        public Object getItem(int position) {            return null;        }        @Override        public long getItemId(int position) {            return 0;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            if (convertView == null) {                convertView = View.inflate(MainActivity.this, R.layout.item, null);            }            News news = mList.get(position);            SmartImageView iv = convertView.findViewById(R.id.iv);            TextView tv = convertView.findViewById(R.id.tv);            TextView tvs = convertView.findViewById(R.id.tvs);            String imagepath = news.getImagepath();            Log.d(TAG, "getView: " + imagepath);            iv.setImageUrl(imagepath);            tv.setText(news.getTitle());            tvs.setText(news.getDescription());            return convertView;        }    }

 

    • smartImageview 
      • 要先声明 要求这个类的完整包名和类名

 

      • 找的控件 展示数据
SmartImageView iv = convertView.findViewById(R.id.iv);            iv.setImageUrl(imagepath);

 

转载于:https://www.cnblogs.com/nangongyibin/p/10219371.html

你可能感兴趣的文章
[官方教程] [ES4封装教程]1.使用 VMware Player 创建适合封装的虚拟机
查看>>
http协议与http代理
查看>>
【iOS开发-91】GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例...
查看>>
Redis+Spring缓存实例
查看>>
Storm集群安装详解
查看>>
centos7.x搭建svn server
查看>>
原码编译安装openssh6.7p1
查看>>
项目实战:自定义监控项--监控CPU信息
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>