今天要做的就是使用RecyclerView获取后台数据并展示为头条新闻的样式。直接上图:

后台的数据格式:
1.xml中添加控件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".activity.HomeActivity"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recy"android:layout_width="match_parent"android:layout_height="match_parent"/>
</LinearLayout>

2.创建recyclerview的item布局 recyclerview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><ImageViewandroid:layout_width="130dp"android:layout_height="100dp"android:id="@+id/image_item"android:src="@drawable/sup_img"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="100dp"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="60dp"android:textSize="20sp"android:text="标题"android:gravity="center"android:id="@+id/title_item"/><TextViewandroid:layout_width="wrap_content"android:layout_height="40dp"android:textSize="12sp"android:text="作者"android:gravity="center"android:id="@+id/author_item"/></LinearLayout></LinearLayout>

3.XXXactivity.java


public class HomeActivity extends Activity implements OnBannerListener {private ArrayList<String> list_path;//获取的json数据public  String data;public  String title;public String images;public String contents;public String authors;public RecyclerView recyclerview;public List<Map<String,Object>> list=new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_home);initView();recyclerview= findViewById(R.id.recy);//获取数据okhttpDate();}private void okhttpDate() {Log.i("TAG","--ok-");new Thread(new Runnable() {@Overridepublic void run() {OkHttpClient client=new OkHttpClient();Request request=new Request.Builder().url(HttpManager.ArticleListUrl).build();try {Response sponse=client.newCall(request).execute();data=sponse.body().string();//解析jsonJXDate(data);} catch (IOException e) {e.printStackTrace();}}}).start();}private void jsonJXDate(String data) {if(data!=null) {try {JSONObject jsonObject = new JSONObject(data);String datas = jsonObject.getString("result");JSONArray array = new JSONArray(datas);for (int i = 0; i < array.length(); i++) {JSONObject object = array.getJSONObject(i);title = object.getString("title");images = object.getString("image");contents = object.getString("content");authors = object.getString("author");Drawable drawable = loadImageFromNetwork(images);Map<String, Object> map = new HashMap<>();map.put("title", title);map.put("images",drawable);map.put("contents",contents);map.put("authors",authors);list.add(map);}Message msg=new Message();msg.what=1;handler.sendMessage(msg);} catch (JSONException e) {e.printStackTrace();}}}public Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what){case 1://添加分割线recyclerview.addItemDecoration(new DividerItemDecoration(HomeActivity.this, DividerItemDecoration.VERTICAL));recy_item_Adapter recy=new recy_item_Adapter(list,HomeActivity.this);//设置布局显示格式recyclerview.setLayoutManager(new LinearLayoutManager(HomeActivity.this));recyclerview.setAdapter(recy);break;}}};private Drawable loadImageFromNetwork(String imageUrl){Drawable drawable = null;try {// 可以在这里通过文件名来判断,是否本地有此图片drawable = Drawable.createFromStream(new URL(imageUrl).openStream(), "image.jpg");} catch (IOException e) {Log.d("test", e.getMessage());}if (drawable == null) {Log.d("test", "null drawable");} else {Log.d("test", "not null drawable");}return drawable ;}}

4.创建recyclerview适配器recy_item_Adapter.java

public class recy_item_Adapter extends RecyclerView.Adapter<recy_item_Adapter.ViewHolder> {public List<Map<String,Object>> list=new ArrayList<>();public Context con;public LayoutInflater inflater;public  recy_item_Adapter(List<Map<String,Object>> list, Context con){this.con=con;this.list=list;inflater=LayoutInflater.from(con);}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view= inflater.inflate(R.layout.recyclerview_item,null);ViewHolder viewHolder=new ViewHolder(view);return viewHolder;}@Overridepublic void onBindViewHolder(final ViewHolder holder, final int position) {holder.recy_title.setText(list.get(position).get("title").toString());holder.recy_imageView.setImageDrawable((Drawable) list.get(position).get("images"));holder.recy_author.setText(list.get(position).get("authors").toString());}@Overridepublic int getItemCount() {return list.size();}class ViewHolder extends RecyclerView.ViewHolder{public TextView recy_title;public ImageView recy_imageView;public TextView recy_author;public ViewHolder(View itemView) {super(itemView);recy_title = itemView.findViewById(R.id.title_item);recy_imageView = itemView.findViewById(R.id.image_item);recy_author = itemView.findViewById(R.id.author_item);}}}

5.记得开启网络权限

Android使用recyclerview实现头条新闻动态展示相关推荐

  1. android高仿今日头条 --新闻阅读器

    摘要: 开发流程 第一篇:(android高仿系列)今日头条 --新闻阅读器 (一) 涉及到的知识点有 1.slidingmenu.lib  (侧拉菜单包)   使用方法配置以及下载:点击这里   实 ...

  2. 今日头条 新闻频道展示

    思路:用HorizontalScrollView 来对频道进行展示,用ViewPager + FragmentPagerAdapter + Fragment 方式来展示每个栏目下的新闻列表 一:对频道 ...

  3. RecyclerView仿头条新闻频道管理

    1,效果图 2,实现 1,Xml布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  4. (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇

    从写第一篇今日头条高仿系列开始,到现在已经过去了1个多月了,其实大体都做好了,就是迟迟没有放出来,因为我觉得,做这个东西也是有个过程的,我想把这个模仿中一步一步学习的过程,按照自己的思路写下来,在根据 ...

  5. (android高仿系列)今日头条 --新闻阅读器 (二)

    高仿今日头条 --- 第一篇:(android高仿系列)今日头条 --新闻阅读器 (一) 上次,已经完成了头部新闻分类栏目的拖动效果. 这篇文章是继续去完善APP 今日头条  这个新闻阅读器的其他功能 ...

  6. android 点动态显示图片,Android用RecyclerView实现动态添加本地图片

    本文介绍了Android用RecyclerView实现动态添加本地图片,分享给大家,具体如下: 简单介绍一下用法: 1.跳转到图片选择页面: Intent intent = new Intent(Pa ...

  7. Android之ListView嵌套,访空间动态展示页面

    项目需求,需要做动态展示功能,我的想法是每条动态的评论都是Listview,然后动态也是Listview,效果图是这样的 这个实现的难点主要是评论adapter和动态adapter的设计实现. 评论a ...

  8. (android高仿系列)今日头条 --新闻阅读器 (一)

    在模仿中循序渐进,以程序员角度去看待每一个APP是如何实现的,它有什么优缺点,并从中提升自己. 之前发现很多人在群里面.论坛上求网易新闻客户端的源码,之后我就去下了个网易新闻客户端和今日头条新闻客户端 ...

  9. [Android] Android 手机下 仿 今日头条 新闻客户端

    利用一个月的时间,自学了 Android 开发 ,为了检验学习成果,特意 开发了这个  仿 今日头条 新闻客户端 AppNews 包括图文新闻+视频新闻+图片新闻 预览演示如下: 功能说明: 1)底部 ...

最新文章

  1. python学习(2)--变量与表达式
  2. 解决Tocmat6.x的catalina.out日志不断增加问题
  3. texture 纹理(贴图)
  4. exe4j打包jar成exe文件(将jdk打包在内)
  5. Mac下VirtualBox虚拟机Win7与主机共享文件夹
  6. OkHttp+Stetho+Chrome调试android网络部分(原创)
  7. CentOS7.x编译安装nginx,实现HTTP2
  8. python读取数据库数据释放内存_在使用python处理数据时,为什么其内存无法自动释放掉?...
  9. Eclipse下创建Hibernate工程
  10. html5实现留言功能,javascript实现留言板功能
  11. vs安装msdn安装文档
  12. 分享个大厂PRD模板
  13. 积木导出pdf打不开文件,后台报空指针
  14. linux集群环境搭建
  15. oracle优化方法,九大Oracle性能优化基本方法详解
  16. Spark CASE WHEN 写法案例
  17. outlook2013升级_Microsoft Outlook 2013入门指南
  18. 电子邮箱邮件怎么撤回,邮箱如何撤回邮件?
  19. re模块day17课堂小结
  20. 百度杯”CTF比赛(十一月场)

热门文章

  1. 乖离水机器人攻略_乖离性百万亚瑟王幽蓝机器人卡牌推荐 超弩幽蓝机器人攻略...
  2. 【Axure高保真原型】刮奖原型
  3. FPGA工程师,如何系统性的编写testbench
  4. wp8 导出短信 到android,如何从outlook同步联系人头像以及管理短信呢
  5. 如何给台式计算机风扇加油,如何给电风扇加油呢?教你一些技巧
  6. mybatis知识翻译(一)
  7. 微信小程序开发关于地图图片显示不出问题
  8. 中国作者论文写作中的常见句法错误(上)
  9. 机车车辆薄轮缘型号及尺寸图 JM3型
  10. php behaviors,YII框架行为behaviors用法示例