Android 新闻客户端案例

xiaoxiao2021-02-28  39

  实现新闻客户端案例首先需要注意XML文件的在线解析,适配器问题和ListView控件的使用。

根据自己的需要和要求,准备好素材。

1、NewsInfo.xml文件如下:

<?xml version =“1.0”encoding =“UTF-8”?> <新闻> <报纸资讯> <图标> http://10.51.9.168:8080/images1/a.jpg </图标> <TITLE>科技温暖世界</ TITLE> <内容>进入一个更有爱的领域</内容> <类型> 1 </类型> <评价> 69 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/b.jpg </图标> <TITLE>“神武”</ TITLE> <内容>新美术资源盘点,视觉新体验</内容> <类型> 2 </类型> <评价> 35 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/c.jpg </图标> <TITLE>南北车正式公布合并</ TITLE> <内容>南北车将于今日正式公布合并</内容> <类型> 3 </类型> <评价> 2 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/d.jpg </图标> <TITLE>萌呆了!汪星人抱玩偶酣睡</ TITLE> <内容>汪星人抱玩偶酣睡,萌翻网友</内容> <类型> 1 </类型> <评价> 25 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/e.jpg </图标> <TITLE>风力发电进校园</ TITLE> <内容>风力发电普进校园</内容> <类型> 2 </类型> <评价> 26 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/f.jpg </图标> <TITLE>地球一小时</ TITLE> <内容>地球熄灯一小时</内容> <类型> 1 </类型> <评价> 23 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/g.jpg </图标> <TITLE>最美公路</ TITLE> <内容>最美公路,难以想象</内容> <类型> 1 </类型> <评价> 23 </评论> </报纸资讯> </新闻> 2、对客户端进行布局:

activity_main.xml文件:

<?xml version =“1.0”encoding =“utf-8”?> <RelativeLayout xmlns:android =“http://schemas.android.com/apk/res/android” 的xmlns:工具= “http://schemas.android.com/tools” 机器人:ID = “@ + ID / activity_main” 机器人:layout_width = “match_parent” 机器人:layout_height = “match_parent” 工具:上下文= “cn.edu.bzu.news.MainActivity”> <的LinearLayout 机器人:ID = “@ + ID /线路1” 机器人:layout_width = “match_parent” 机器人:layout_height = “WRAP_CONTENT”> <ListView的 机器人:ID = “@ + ID /列表1” 机器人:layout_width = “match_parent” 机器人:layout_height = “WRAP_CONTENT”> </的ListView> </的LinearLayout> </ RelativeLayout>

item.xml文件:

<?xml version =“1.0”encoding =“utf-8”?> <RelativeLayout xmlns:android =“http://schemas.android.com/apk/res/android” 机器人:layout_width = “match_parent” 机器人:layout_height = “match_parent”> <com.loopj.android.image.SmartImageView 机器人:ID = “@ + ID / item_image” 机器人:layout_width = “80dp” 机器人:layout_height = “60dp” android:scaleType =“centerCrop”/> <TextView的 机器人:ID = “@ + ID / item_tv1” 机器人:layout_width = “WRAP_CONTENT” 机器人:layout_height = “WRAP_CONTENT” android:layout_toRightOf =“@ id / item_image”/> <TextView的 机器人:ID = “@ + ID / item_tv2” 机器人:layout_width = “WRAP_CONTENT” 机器人:layout_height = “WRAP_CONTENT” 机器人:layout_below = “@ ID / item_tv1” 机器人:layout_toRightOf = “@ ID / item_image”/> <TextView的 机器人:ID = “@ + ID / item_tv3” 机器人:layout_width = “WRAP_CONTENT” 机器人:layout_height = “WRAP_CONTENT” 机器人:layout_alignParentRight = “真”/> </ RelativeLayout的> 3、MainActivity的实现代码:

import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import java.io.ByteArrayInputStream; import java.util.List; import cn.edu.bzu.news.adapter.MyAdapter; 进口cn.edu.bzu.news.entity.NewsInfo; import cn.edu.bzu.news.service.NewsInfoService; 公共课MainActivity扩展AppCompatActivity { 私有ListView listView; 私人MyAdapter适配器 private List <NewsInfo> newsInfos; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.activity_main); 的ListView =(ListView中)findViewById(R.id.list1); 加载(); } public void load() { AsyncHttpClient asyncHttpClient = new AsyncHttpClient(); asyncHttpClient.get(getString(R.string.servelurl)),新的AsyncHttpResponseHandler(){ @覆盖 public void onSuccess(String content){ super.onSuccess(内容); byte [] bytes = content.getBytes(); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); newsInfos = NewsInfoService.getNewsInfo(bais); if(newsInfos == null)Toast.makeText(MainActivity.this,“解析失败”,Toast.LENGTH_LONG).show(); else { adapter = new MyAdapter(MainActivity.this,R.layout.item,newsInfos); listView.setAdapter(适配器); Toast.makeText(MainActivity.this, “成功”,Toast.LENGTH_LONG).show(); } } @覆盖 public void onFailure(Throwable error,String content){ super.onFailure(误差,内容); Toast.makeText(MainActivity.this, “请求失败”,Toast.LENGTH_LONG).show(); } }); } } 4、NewsInfo.java:

public class NewsInfo { 私人字符串路径; 私人字符串标题; 私人字符串 私人长评论 public void setDes(String des){ this.des = des } public void setTitle(String title){ this.title = title; } public void setPath(String path){ this.path = path; } public void setComment(long comment){ this.comment =评论 } public String getPath(){ 回路 } public String getTitle(){ 返回标题 } public String getDes(){ 回报 } public long getComment(){ 返回评论 } } 5、NewsInfoService.java:

import org.xmlpull.v1.XmlPullParser; import java.io.InputStream; import java.util.ArrayList; import java.util.List; 进口cn.edu.bzu.news.entity.NewsInfo; public class NewsInfoService { public static List <NewsInfo> getNewsInfo(InputStream inputStream) { XmlPullParser parser = Xml.newPullParser(); 尝试{ parser.setInput(的inputStream, “UTF-8”); int type = parser.getEventType(); 列表<NewsInfo> newsInfos = null; NewsInfo newsInfo = null; 而(键入!= XmlPullParser.END_DOCUMENT) { 开关(类型){ case XmlPullParser.START_TAG: if(“news”.equals(parser.getName())) newsInfos = new ArrayList <NewsInfo>(); else if(“newsInfo”.equals(parser.getName())) newsInfo = new NewsInfo(); else if(“icon”.equals(parser.getName())){ String icon = parser.nextText(); newsInfo.setPath(图标); } else if(“title”.equals(parser.getName())){ String title = parser.nextText(); newsInfo.setTitle(标题); } else if(“content”.equals(parser.getName())){ String des = parser.nextText(); newsInfo.setDes(DES); } else if(“comment”.equals(parser.getName())){ String comment = parser.nextText(); newsInfo.setComment(的Long.parseLong(评论)); } 打破; case XmlPullParser.END_TAG: if(“newsInfo”.equals(parser.getName())){ newsInfos.add(报纸资讯); newsInfo = null; } 打破; } 类型= parser.next(); } 回报新闻 } catch(Exception e){ e.printStackTrace(); 返回null; } } } 6、MyAdapter.java:

导入android.content.Context; 导入android.view.LayoutInflater; 导入android.view.View; 导入android.view.ViewGroup; 导入android.widget.ArrayAdapter; 导入android.widget.TextView; import com.loopj.android.image.SmartImageView; import java.util.List; 进口cn.edu.bzu.news.R; 进口cn.edu.bzu.news.entity.NewsInfo; public class MyAdapter extends ArrayAdapter <NewsInfo> { private int resourceId; public MyAdapter(Context context,int textViewResourceId,List <NewsInfo> object){ super(context,textViewResourceId,object); resourceId = textViewResourceId; } public View getView(int position,View convertView,ViewGroup parent) { NewsInfo info = getItem(position); layoutInflater inflater =(LayoutInflater)getContext()。getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看view = inflater.inflate(resourceId,null); SmartImageView imageView =(SmartImageView)view.findViewById(R.id.item_image); TextView tv1 =(TextView)view.findViewById(R.id.item_tv1); TextView tv2 =(TextView)view.findViewById(R.id.item_tv2); TextView tv3 =(TextView)view.findViewById(R.id.item_tv3); imageView.setImageUrl(info.getPath()); tv1.setText(info.getTitle()); tv2.setText(info.getDes()); tv3.setText(将String.valueOf(info.getComment())); 返回视图; } } 7、最后运行效果图:

转载请注明原文地址: https://www.6miu.com/read-59943.html

最新回复(0)