Android 微博实时热点获取(GET)网络请求

首先在xml文件上界面布局
这边采用LinearLayour布局,首先添加TextView控件来显示标题,第二采用RecyclerView列表控件来实现内容的显示,第三添加SwipeRefreshLayout控件实现内容的刷新。在添加RecyclerView列表控件时,需要在Build.gradle文件中下载

    implementation 'com.android.support:design:28.0.0'implementation 'com.android.support:support-v4:28.0.0'implementation 'com.android.support:appcompat-v7:28.0.0'

代码如下

<?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=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="微博实时热点"android:layout_gravity="center"android:textSize="30sp"/><androidx.swiperefreshlayout.widget.SwipeRefreshLayoutandroid:id="@+id/s1"android:layout_width="wrap_content"android:layout_height="wrap_content"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/r1"android:layout_width="match_parent"android:layout_height="wrap_content"/></androidx.swiperefreshlayout.widget.SwipeRefreshLayout></LinearLayout>

界面截图

第二步:在Mainactivity.java完成功能的实现
第一步:绑定id

第二步:数据解析
定义一个类DataModel.class

public class DataModel implements Serializable {}

使用快捷键(Alt+s)粘贴全部过去数据,之后一直点击OK

在网络请求之前在AndroidManifest.xml文件中添加网络权限

<uses-permission android:name="android.permission.INTERNET"/>

第三步:完成网络的请求
定义一个请求接口

public void requestDate()
{}

在该接口进行网络请求

public void requestDate()
{String url="http://api.tianapi.com/txapi/weibohot/index? key=a9fa9ae02ea18c7623fc94a04c1c0cf8";OkHttpClient okHttpClient=new OkHttpClient();final Request request=new Request.Builder().url(url).get().build();Call call=okHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, Response response) throws IOException {String result=response.body().string();Gson gson=new Gson();final DateModel model=gson.fromJson(result,DateModel.class);//切换线程runOnUiThread(new Runnable() {@Overridepublic void run() {refreshDate(model);}});}});
}

第三步:完成列表的相关操作
首先定义列表的布局,在layou下创建一个xml文件,实现布局

这边采用LinearLayour布局,添加TextView控件来显示内容


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/t1"android:padding="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginTop="10dp"android:textSize="20sp"android:text="第一个"/>
</LinearLayout>

第二步:定义一个类来实现列表的功能

public class Adapter2 {}

在该类中继承RecyclerView.Adapter

public class Adapter2 extends RecyclerView.Adapter {}

之后把鼠标移至Adapter2,在键盘按Alt+Enter 选择第一个,最后选择ok

在倒数第二个花括号中定义一个类

    public class ViewHolder extends RecyclerView.ViewHolder{}


之后把鼠标移至RecyclerView.ViewHolder,在键盘按Alt+Enter,选择第一个,按确定

在该类中填写控件的id

  public class ViewHolder extends RecyclerView.ViewHolder{private TextView t1;//文本框idpublic ViewHolder(@NonNull View itemView) {super(itemView);t1=itemView.findViewById(R.id.t1);//绑定id}}

将Json的数据放进列表

更改当前的值

绑定xml ,并返回当前的值

将获取到的JSON数据传递到指定的控件

返回数据的长度

第四步:在MainActivity.java文件,输入代码选择列表显示的样式并提取解析后的相关数据

    private void refreshDate(DateModel model){if(model==null||model.getNewslist()==null){return;}Adapter2 adapter=new Adapter2(model.getNewslist());//把全部数据传递给列表r1.setAdapter(adapter);//传递数值过去s1.setRefreshing(false);//停止刷新Toast.makeText(MainActivity.this, "更新完成" , Toast.LENGTH_SHORT).show();//提示}

第五步:完成自动刷新数据
首先定义一个Handler和Timer

第二:定义两个接口

第一个:定时器接口,发送信息

public void startMyTimer()//启动定时器 一分钟自动更新一次内容
{}
    public void startMyTimer()//启动定时器 一分钟自动更新一次内容{timer=new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {mhandler.sendEmptyMessage(0x22);}}, 0, 60000);}

第二个接口接收信息

public void startFlicker()
{}
    public void startFlicker(){mhandler=new Handler(){@Overridepublic void handleMessage(Message msg) {if(msg.what==0x22){requestDate();//请求数据}super.handleMessage(msg);}};startMyTimer();//启动定时器}

最后启动该接口

第六步:实现下拉列表更新数据

s1.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {@Overridepublic void onRefresh() {new Handler().postDelayed(new Runnable() {@Overridepublic void run() {requestDate();//请求数据}}, 2000);//实现2秒完成更新}});

该项目采用了两种来获取数据,第一种:每60秒自动刷新获取数据;第二种:下拉刷新获取数据,如果需要在真机使用软件,请在(AndroidManifest.xml)中的application输入以下代码,防止真机对网络请求不了

android:usesCleartextTraffic="true"

下面是本项目的源代码
https://download.csdn.net/download/Scxioi0/12910679

Android 微博实时热点获取(GET)网络请求相关推荐

  1. android wifi热点广播,在Android的WiFi热点获取无线网络的广播地址(Getting wifi broadcast...

    首先,你可以检查什么是您的IP地址: public InetAddress getIpAddress() { InetAddress inetAddress = null; InetAddress m ...

  2. Android RxJava应用:优雅实现网络请求轮询(无条件)

    前言 Rxjava,由于其基于事件流的链式调用.逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎. 今天,我将为大家带来 Rxjava创建操作符的常见开发应用场景:轮询需求 ...

  3. android 星座运势接口,2018-04-26—网络请求(例:星座运势app实现)

    上一节给大家讲了一个比较无聊的东西,这节就会派上用场了,哈哈,今天给大家讲解的是网络请求,我们做的APP很少是单机的App吧,一般情况下多多少少都会用到一些网络请求,而他具体是怎么实现的呢?今天我们来 ...

  4. Xamarin.Android之封装个简单的网络请求类

    http://doc.okbase.net/catcher1994/archive/220195.html Catcher8 2016/4/23 0:28:50 阅读(72) 评论(0) 一.前言 回 ...

  5. Android之封装好的异步网络请求框架

    1.简介  Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnection,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使 ...

  6. Android肝帝战纪之网络请求框架封装(Retrofit的封装)

    网络请求框架封装(OkHttp3+Retrofit+loading的封装) Retrofit的Github链接 点此链接到Github AVLoadingIndicatorView的Github链接( ...

  7. Android强制在主线程进行网络请求

    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVie ...

  8. Android OkHttp+Retrofit+Rxjava+Hilt 的网络请求封装

    今天给大家简单的封装一个现在比较流行的网络请求框架 第一步是导入我们所需要的依赖还需要在android {}闭包下添加一个 buildFeatures{viewBinding true } imple ...

  9. Android 利用an框架快速实现网络请求(含下载上传文件)

    作者:Bgwan 链接:https://zhuanlan.zhihu.com/p/22573081 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架 ...

最新文章

  1. ddd架构 无法重构_漫谈分层架构:为什么要进行架构分层?
  2. Depth-aware CNN
  3. CentOS6挂载读写NTFS分区(ntfs-3g)
  4. nginx tomcat集群实现session共享
  5. 3rd 逻辑运算符的基本用法
  6. 吴忠军 - 如何理解马云所说的月入两三万,三四万的人最幸福?
  7. java接收json字符串_JAVA后台接收前台传过来的json字符串并解析获得key 和value
  8. 《Java编程思想》读书笔记-对象导论
  9. 算法:动态规划 最大连续子数组和 Maximum Subarray
  10. android 基础布局
  11. 网络安全扫盲贴 史上最全网络安全问题解答
  12. 自动化早已不是那个自动化了,谈一谈自动化测试现状和自我感受……
  13. JVM垃圾回收——ZGC垃圾收集器
  14. oracle怎么条件强制走索引,如何让oracle的select强制走索引
  15. react前端ui的使用_使用React Morph变形UI过渡
  16. Element UI Element Plus之改变表格单元格颜色
  17. OSChina 周二乱弹 —— 你每天的工作就是摁电脑?
  18. 【大咖发声】推荐一本书,我自己写的书
  19. Meta仿真 Habitat-Sim使用文档
  20. 拼团秒杀功能,小程序商城能比得过拼多多吗?

热门文章

  1. JPG免费转PDF的方法分享
  2. 智能终端双处理器架构
  3. MATLAB裂缝检测识别
  4. 东元服务器显示02,东元伺服驱动器出现AL-02故障代码怎么办?
  5. QC、QOC、IPQC、QA公司产品的“公检法”
  6. OpenOCD学习笔记 6-如何使用FTDI芯片作为SWD或JTAG调试器
  7. 被阉割的Google
  8. 50 道网络面试题及答案(下)
  9. linux高级命令干货
  10. 《Network Warrior中文版(第2版)——思科网络工程师必备手册》一导读