码迷,mamicode.com
首页 > 移动开发 > 详细

android新闻端demo

时间:2015-10-08 09:11:25      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

学习了有一个多星期的android了,今天跟着视频来个小案例练习下,在这里记录下:

开发软件 android studio 

第一步:先在activity_main.xml文件中写布局代码,这里用一个listview来展示每一条新闻

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity">

   <ListView
       android:id="@+id/lv_news"
       android:layout_width="wrap_content"
       android:layout_height="match_parent">

   </ListView>




</RelativeLayout>

知识点补充:

fill_parent

设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。

 wrap_content

设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。

match_parent
   level8开始fill_parent替换为match_parent,match_parent和fill_parent是一个意思 .两个参数意思一样

tools:context=".MainActivity">

表示,该布局配置文件的使用环境上下文为

MainActivity

这个类

第二步:为每一个新闻项自定义一个布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:padding="5dp"
   >

   <com.loopj.android.image.SmartImageView
       android:id="@+id/siv_listvie_item_icon"
       android:layout_width="100dip"
       android:layout_height="60dip"
       android:src="@drawable/a2"
      />
   <TextView
       android:id="@+id/tv_listview_item_title"
       android:layout_toRightOf="@id/siv_listvie_item_icon"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:singleLine="true"
       android:text="3Q大战宣判:腾讯获赔500"
       android:textColor="@android:color/black"
       android:textSize="17sp"/>
   <TextView
       android:id="@+id/tv_listview_item_detail"
       android:layout_alignLeft="@id/tv_listview_item_title"
       android:layout_below="@id/tv_listview_item_title"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="sdjsahdkjsahdkjsadhjksahdkj"
       android:textColor="@android:color/darker_gray"
       android:textSize="14sp"/>
   <TextView
       android:id="@+id/tv_listview_item_comment"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:layout_alignParentBottom="true"
       android:text="668跟帖"
       android:textColor="@android:color/darker_gray"
       android:textSize="14sp"/>
</RelativeLayout>

第三步:开始编写逻辑文件

com.zaizai.newsandroid.view.LayoutInflaterandroid.view.Menuandroid.view.MenuItemandroid.view.ViewGroupandroid.widget.BaseAdapterorg.apache.http.HttpResponseorg.apache.http.client.HttpClientorg.xmlpull.v1.XmlPullParserjava.io.InputStreamjava.util.List{
    = = = = List<> = = Handler() {
        (msg) {
            (msg.) {
                : = (List<>) msg.myAdaper = ().setAdapter(myAdaper):.(..).show():
                    }
            .handleMessage(msg)}
    }(savedInstanceState) {
        .onCreate(savedInstanceState)setContentView(.)init()}

    () {
         = () findViewById(.)Thread(Runnable() {
            () {
                List<> newInfList = getNewsFromInternet()message = Message()(newInfList != ) {
                    message.= message.= newInfList} {
                    message.= }
                    //通过sendMessage()函数将数据传给主线程
                .sendMessage(message)}
        }).start()}

    List<> () {
        HttpClient httpclient = {
             httpclient = DefaultHttpClient()get = HttpGet()HttpResponse httpResponse = httpclient.execute(get)statusCode = httpResponse.getStatusLine().getStatusCode()(statusCode == ) {
                InputStream inputStream = httpResponse.getEntity().getContent()List<> newsInfos = getNewsListFromInputStream(inputStream)newsInfos} {
                .(+ statusCode)}
        } (e) {
            e.printStackTrace()} (e) {
            e.printStackTrace()} {
            (httpclient != ) {
                httpclient.getConnectionManager().shutdown()}
        }
        }

    List<> (InputStream is) {

        factory = .()XmlPullParser parser = factory.newPullParser()parser.setInput(is)eventType = parser.getEventType()List<> infoList = newsInfo = (eventType != XmlPullParser.) {
            tagName = parser.getName()(eventType) {
                XmlPullParser.: (.equals(tagName)) {
                        infoList = ArrayList<>()} (.equals(tagName)) {
                        newsInfo = ()} (.equals(tagName) && newsInfo != ) {
                        newsInfo.setTitle(parser.nextText())} (.equals(tagName) && newsInfo != ) {
                        newsInfo.setDetail(parser.nextText())} (.equals(tagName) && newsInfo != ) {
                        newsInfo.setComment(.(parser.nextText()))} (.equals(tagName) && newsInfo != ) {
                        newsInfo.setImageUrl(parser.nextText())}
                    XmlPullParser.:(.equals(tagName) && newsInfo != ) {
                        infoList.add(newsInfo)}
                :
                    }
            eventType = parser.next()}

        infoList}
    BaseAdapter {

        () {
            .size()}

        (positionconvertViewViewGroup parent) {
            view = (convertView==){
                LayoutInflater inflater = getLayoutInflater()view = inflater.inflate(.)}{
                view = convertView}
            sivIcon = () view.findViewById(.)tvTitle = () view.findViewById(.)tvDetail = () view.findViewById(.)tvComment = () view.findViewById(.)newsInfo = .get(position)sivIcon.setImageUrl(newsInfo.getImageUrl())tvTitle.setText(newsInfo.getTitle())tvDetail.setText(newsInfo.getDetail())tvComment.setText(newsInfo.getComment()+)view}

        (position) {
            }

        (position) {
            }


    }

    (Menu menu) {
        getMenuInflater().inflate(.menu)}

    (MenuItem item) {
        id = item.getItemId()(id == .) {
            }

        .onOptionsItemSelected(item)}
}

:网络访问时不可使用localhost或者127.0.0.1,否则会抛出访问被拒绝的异常错误

在android studio中导入jar包,直接将jar包考诶到libs目录下,右键将其添加进去即可

android新闻端demo

标签:

原文地址:http://my.oschina.net/zaizaiangels/blog/514037

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!