案例——新闻客户端
来源:互联网 发布:草图大师mac版快捷键 编辑:程序博客网 时间:2024/06/08 15:22
1.创建程序(activity_mian.xml)
<?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" android:layout_marginTop="5dp"/> </FrameLayout></LinearLayout>2.创建ListView Item的布局,ListView的Item布局文件news_item.xml
<?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>
3.编写界面交互代码(MainActivity)package bzu.edu.cn.imagebrowser;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.Toast;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.AsyncHttpResponseHandler;import java.util.List;import bzu.edu.cn.imagebrowser.adapter.MyAdapter;import bzu.edu.cn.imagebrowser.entity.NewsInfo;import bzu.edu.cn.imagebrowser.tools.JsonParse;public class Main2Activity extends AppCompatActivity { private ListView listView; private LinearLayout loading; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); listView=(ListView)findViewById(R.id.lv_news); loading=(LinearLayout)findViewById(R.id.loading); fillData(); } private void fillData(){ AsyncHttpClient asyncHttpClient=new AsyncHttpClient(); asyncHttpClient.get("http://10.3.24.180:8080/NewsInfo.json", new AsyncHttpResponseHandler() { @Override public void onSuccess(int i,org.apache.http.Header[] headers, byte[] bytes) { String json; try { json = new String(bytes,"utf-8"); List<NewsInfo> newsInfos= JsonParse.getNewsInfo(json); if (newsInfos==null){ Toast.makeText(Main2Activity.this,"解析失败",Toast.LENGTH_LONG).show(); }else{ loading.setVisibility(View.INVISIBLE); listView.setAdapter(new MyAdapter(Main2Activity.this,newsInfos)); } } catch (Exception e) { e.printStackTrace(); } } @Override public void onFailure(int i,org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { } }); }}
4.创建Adapter类
package bzu.edu.cn.imagebrowser.adapter;import android.content.Context;import android.graphics.Color;import android.support.annotation.NonNull;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.TextView;import com.loopj.android.image.SmartImageView;import org.w3c.dom.Text;import java.util.List;import bzu.edu.cn.imagebrowser.R;import bzu.edu.cn.imagebrowser.entity.NewsInfo;/** * Created by yn on 2017/5/19. */public class MyAdapter extends ArrayAdapter<NewsInfo>{ public MyAdapter(Context context, List<NewsInfo> objects) { super(context, R.layout.news_item, objects); } @NonNull @Override public View getView(int position, View convertView, ViewGroup parent) { NewsInfo newsInfo=getItem(position); View view; ViewHolder viewHolder; if(convertView==null){ view= LayoutInflater.from(getContext()).inflate(R.layout.news_item, null); viewHolder=new ViewHolder(); viewHolder.siv_icon=(SmartImageView)view.findViewById(R.id.siv_icon); viewHolder.tv_title=(TextView)view.findViewById(R.id.tv_title); viewHolder.tv_description=(TextView)view.findViewById(R.id.tv_description); viewHolder.tv_type=(TextView)view.findViewById(R.id.tv_type); view.setTag(viewHolder); } else{ view=convertView; viewHolder=(ViewHolder)view.getTag(); } viewHolder.siv_icon.setImageUrl(newsInfo.getIcon()); viewHolder.tv_title.setText(newsInfo.getTitle()); viewHolder.tv_description.setText(newsInfo.getContent()); int type=newsInfo.getType(); switch (type){ case 1: viewHolder.tv_type.setText("评论:"+newsInfo.getComment()); break; case 2: viewHolder.tv_type.setTextColor(Color.RED); viewHolder.tv_type.setText("专题"); break; case 3: viewHolder.tv_type.setTextColor(Color.BLUE); viewHolder.tv_type.setText("LIVE"); break; } return view; } class ViewHolder{ SmartImageView siv_icon; TextView tv_title; TextView tv_description; TextView tv_type; }}
5.创建工具类解析xml文件
package bzu.edu.cn.imagebrowser.entity;/** * Created by yn on 2017/5/19. */public class NewsInfo { private String icon; private String title; private String content; private int type; private long comment; public long getComment() { return comment; } public void setComment(long comment) { this.comment = comment; } public int getType() { return type; } public void setType(int type) { this.type = type; } public String getContent() { return content; } public void setContent(String description) { this.content = content; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; }}
6.配置服务器
从服务器上下载一个xml,yincixuyao开启Tomcat服务器。在Tomcat根目录下找到bin文件夹,运行到该文件夹下的startup.bat文件即可开启Tomcat服务器。然后,在tomcat的安装目录打开webapps文件夹,将NewsInfo.xml文件放置在ROOT文件夹下。
7.添加权限(AndriodMainfest.xml)
<uses-permission android:name="android.permission.INTERNET" />8.展示效果
阅读全文
0 0
- 案例—新闻客户端
- 案例——新闻客户端
- 案例——新闻客户端
- Android案例—新闻客户端
- 新闻客户端————案例
- 新闻客户端案例——(AsycHttpClient,SmartImageView,JSON)
- 新闻客户端案例开发
- 新闻客户端案例
- 案例--新闻客户端
- 简易新闻客户端案例
- 实现案例新闻客户端
- 新闻客户端案例
- 案例----新闻客户端
- 新闻客户端案例
- 案例-----新闻客户端
- 新闻客户端案例
- 简单新闻客户端案例
- 新闻客户端综合案例
- App保存密码相关知识
- lhgdialog api详情
- Android MediaProjection 录屏
- 关于Spring aop的配置方式解说
- window.onscroll 上是否有方法
- 案例——新闻客户端
- Activiti6.0.0 跟踪流程执行情况用红色框在流程图上标识路线跟节点
- L1范数和L2范数的区别
- JavaScript sort()方法总结
- HTTPS无法打开:curl: (35) Encountered end of file
- Linux tcpdump命令详解
- 神奇的位运算
- 【转】关于Ubuntu中passwd、shadow、group等文件
- LeetCode 455. Assign Cookies