新闻案例

来源:互联网 发布:校园网络自助平台 编辑:程序博客网 时间:2024/05/23 00:26

这里写图片描述

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="cn.edu.bzu.news">    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity><!-- ATTENTION: This was auto-generated to add Google Play services to your project for     App Indexing.  See https://g.co/AppIndexing/AndroidStudio for more information. -->        <meta-data            android:name="com.google.android.gms.version"            android:value="@integer/google_play_services_version" />    </application></manifest>

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

package cn.edu.bzu.news;import android.graphics.Color;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.google.android.gms.appindexing.Action;import com.google.android.gms.appindexing.AppIndex;import com.google.android.gms.appindexing.Thing;import com.google.android.gms.common.api.GoogleApiClient;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.AsyncHttpResponseHandler;import com.loopj.android.http.RequestHandle;import com.loopj.android.image.SmartImageView;import org.apache.http.Header;import java.io.ByteArrayInputStream;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView lv_news;    private LinearLayout loading;    private List<NewsInfo> newsInfos;    /**     * ATTENTION: This was auto-generated to implement the App Indexing API.     * See https://g.co/AppIndexing/AndroidStudio for more information.     */    private GoogleApiClient client;    /**     * ATTENTION: This was auto-generated to implement the App Indexing API.     * See https://g.co/AppIndexing/AndroidStudio for more information.     */    public Action getIndexApiAction() {        Thing object = new Thing.Builder()                .setName("Main Page") // TODO: Define a title for the content shown.                // TODO: Make sure this auto-generated URL is correct.                .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))                .build();        return new Action.Builder(Action.TYPE_VIEW)                .setObject(object)                .setActionStatus(Action.STATUS_TYPE_COMPLETED)                .build();    }    @Override    public void onStart() {        super.onStart();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client.connect();        AppIndex.AppIndexApi.start(client, getIndexApiAction());    }    @Override    public void onStop() {        super.onStop();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        AppIndex.AppIndexApi.end(client, getIndexApiAction());        client.disconnect();    }    private class NewsAdapter extends BaseAdapter {        @Override        public int getCount() {            return newsInfos.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) {            View view = View.inflate(MainActivity.this, R.layout.news_item, null);            SmartImageView siv = (SmartImageView) view.findViewById(R.id.siv_icon);            TextView tv_title = (TextView) view.findViewById(R.id.tv_title);            TextView tv_description = (TextView) view.findViewById(R.id.tv_description);            TextView tv_type = (TextView) view.findViewById(R.id.tv_type);            NewsInfo newsInfo = newsInfos.get(position);            siv.setImageUrl(newsInfo.getIconPath(), R.drawable.ab, R.drawable.ic_launcher);            tv_title.setText(newsInfo.getTitle());            tv_description.setText(newsInfo.getdescroption());            int type = newsInfo.gettype();            switch (type) {                case 1:                    tv_type.setText("评论:" + newsInfo.getComment());                    break;                case 2:                    tv_type.setTextColor(Color.RED);                    tv_type.setText("专题:");                    break;                case 3:                    tv_type.setTextColor(Color.BLUE);                    tv_type.setText("LIVE");                    break;            }            return view;        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lv_news = (ListView) findViewById(R.id.lv_news);        loading = (LinearLayout) findViewById(R.id.loading);        fillData2();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();    }    private void fillData2() {        AsyncHttpClient asynHttpClient = new AsyncHttpClient();        RequestHandle requestHandle = asynHttpClient.get(getString(R.string.serverurl), new AsyncHttpResponseHandler() {            public void onSuccess(String Content) {                byte[] bytes = Content.getBytes();                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);                newsInfos = NewsInfoService.getNewsInfos(bais);                if (newsInfos == null) {                    Toast.makeText(MainActivity.this, "解析失败",Toast.LENGTH_LONG).show();                } else {                    loading.setVisibility(View.INVISIBLE);                    lv_news.setAdapter(new NewsAdapter());                }            }            @Override            public void onSuccess(int i, Header[] headers, byte[] bytes) {            }            @Override            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {                int error;                Header[] content;                Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_LONG).show();            }        });    }}

这里写图片描述

这里写图片描述

package cn.edu.bzu.news;import android.widget.TextView;/** * Created by 牵爱看海 on 2017/5/30. */public class NewsInfo {    private String iconPath;    private String title;    private String description;    private int type;    private long comment;    public String getIconPath() {        return iconPath;    }    public void setIconPath(String iconPath) {        this.iconPath = iconPath;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getDescription() {        return description;    }    public void setDescription(String description) {        this.description = description;    }    public int getType() {        return type;    }    public void setType(int type) {        this.type = type;    }    public long getComment() {        return comment;    }    public void setComment(long comment) {        this.comment = comment;    }    public int  getdescroption() {        this.description = description;        return 0;    }    public int gettype() {        this.type=type;        return 0;    }}

这里写图片描述
这里写图片描述
这里写图片描述

package cn.edu.bzu.news;import android.util.Xml;import org.xmlpull.v1.XmlPullParser;import java.io.InputStream;import java.util.ArrayList;import java.util.List;/** * Created by 牵爱看海 on 2017/5/30. */public class NewsInfoService {    public static List<NewsInfo> getNewsInfos(InputStream is) {        XmlPullParser parser = Xml.newPullParser();        try {            parser.setInput(is,"utf-8");            int type =parser.getEventType();            List<NewsInfo> newsInfos=null;            NewsInfo newsInfo=null;            while (type!=XmlPullParser.END_DOCUMENT){                switch (type){                    case XmlPullParser.START_TAG:                        if("news".equals(parser.getName())){                            newsInfo= new NewsInfo();                        }else if("newsInfo".equals(parser.getName())){                            newsInfo=new NewsInfo();                        }else if("icon".equals(parser.getName())){                            String icon=parser.nextText();                            newsInfo.setIconPath(icon);                        }else  if("title".equals(parser.getName())){                            String title=parser.nextText();                            newsInfo.setTitle(title);                        }else if("content".equals(parser.getName())){                            String decription=parser.nextText();                            newsInfo.setDescription(decription);                        }else if("type".equals(parser.getName())){                            String newstype=parser.nextText();                            newsInfo.setType(Integer.parseInt(newstype));                        }else if("comment".equals(parser.getName())){                            String comment = parser.nextText();                            newsInfo.setComment(Long.parseLong(comment));                        }                        break;                    case XmlPullParser.END_TAG:                        if ("newsInfo".equals(parser.getName())){                            newsInfos.add(newsInfo);                            newsInfo=null;                        }                        break;                }                type=parser.next();            }            return newsInfos;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}

这里写图片描述

package cn.edu.bzu.news;import android.content.Context;import android.support.test.InstrumentationRegistry;import android.support.test.runner.AndroidJUnit4;import org.junit.Test;import org.junit.runner.RunWith;import static org.junit.Assert.*;/** * Instrumentation test, which will execute on an Android device. * * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> */@RunWith(AndroidJUnit4.class)public class ExampleInstrumentedTest {    @Test    public void useAppContext() throws Exception {        // Context of the app under test.        Context appContext = InstrumentationRegistry.getTargetContext();        assertEquals("cn.edu.bzu.news", appContext.getPackageName());    }}

这里写图片描述
这里写图片描述

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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"    tools:context=".MainActivity"    android:orientation="vertical">    <FrameLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <LinearLayout            android:id="@+id/loading"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:gravity="center"            android:orientation="vertical"            android:visibility="invisible">            <ProgressBar                android:layout_width="wrap_content"                android:layout_height="wrap_content" />            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="正在加载信息..." />        </LinearLayout>        <ListView            android:id="@+id/lv_news"            android:layout_width="match_parent"            android:layout_height="match_parent" />    </FrameLayout></LinearLayout>

这里写图片描述
这里写图片描述
这里写图片描述

<?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="65dp">    <com.loopj.android.image.SmartImageView        android:id="@+id/siv_icon"        android:layout_width="80dp"        android:layout_height="60dp"        android:scaleType="centerCrop"        android:src="@mipmap/ic_launcher"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"></com.loopj.android.image.SmartImageView>    <TextView        android:id="@+id/tv_title"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="5dp"        android:layout_marginTop="10dp"        android:layout_toRightOf="@id/siv_icon"        android:ellipsize="end"        android:maxLength="20"        android:singleLine="true"        android:text="我_标题"        android:textColor="#000000"        android:textSize="18sp" />    <TextView        android:id="@+id/tv_description"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/tv_title"        android:layout_marginLeft="5dp"        android:layout_marginTop="5dp"        android:layout_toRightOf="@id/siv_icon"        android:ellipsize="end"        android:maxLength="16"        android:maxLines="1"        android:text="我_描述"        android:textColor="#99000000"        android:textSize="14sp" />    <TextView        android:id="@+id/tv_type"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_alignParentRight="true"        android:layout_marginBottom="5dp"        android:layout_marginRight="10dp"        android:text="评论"        android:textColor="#99000000"        android:textSize="12sp" /></RelativeLayout>

这里写图片描述
这里写图片描述

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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"    tools:context=".MainActivity"    android:orientation="vertical">    <newsInfo>        <icon>http://172.16.25.13:8080/img/a.jpg</icon>        <title>科技温暖世界</title>        <content>进入一个更有爱的领域</content>        <type>1</type>    </newsInfo>    <newsInfo>        <icon>http://172.16.25.13:8080/img/a.jpg</icon>        <title>《神武》</title>        <content>新美术资源盘点,视觉新体验</content>        <type>2</type>        <comment>35</comment>    </newsInfo>    <newsInfo>        <icon>http://172.16.25.13:8080/img/a.jpg</icon>        <title>南北车正式公布合并</title>        <content>南北车将于今日正式公布合并</content>        <type>3</type>        <comment>2</comment>    </newsInfo>    <newsInfo>        <icon>http://172.16.25.13:8080/img/a.jpg</icon>        <title>北京拟推医生电子注册</title>        <content>突破多点执业“限制”</content>        <type>1</type>        <comment>25</comment>    </newsInfo>    <newsInfo>        <icon>http://172.16.25.13:8080/img/a.jpg</icon>        <title>风力发电进校园</title>        <content>风力发电普进校园</content>        <type>2</type>        <comment>26</comment>    </newsInfo>    <newsInfo>        <icon>http://172.16.25.13:8080/img/a.jpg</icon>        <title>地球一小时</title>        <content>地球熄灯一小时</content>        <type>1</type>        <comment>23</comment>    </newsInfo></LinearLayout>

这里写图片描述

<?xml version="1.0" encoding="utf-8"?><resources>    <color name="colorPrimary">#3F51B6</color>    <color name="colorPrimaryDark">#393E9E</color>    <color name="colorAccent">#FF40</color></resources>

这里写图片描述

<resources>    <string name="app_name">News</string>    <string name="serverurl" /></resources>

这里写图片描述

<resources>    <!-- Base application theme. -->    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">        <!-- Customize your theme here. -->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>    </style></resources>