Android 微博实时热点获取(GET)网络请求
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)网络请求相关推荐
- android wifi热点广播,在Android的WiFi热点获取无线网络的广播地址(Getting wifi broadcast...
首先,你可以检查什么是您的IP地址: public InetAddress getIpAddress() { InetAddress inetAddress = null; InetAddress m ...
- Android RxJava应用:优雅实现网络请求轮询(无条件)
前言 Rxjava,由于其基于事件流的链式调用.逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎. 今天,我将为大家带来 Rxjava创建操作符的常见开发应用场景:轮询需求 ...
- android 星座运势接口,2018-04-26—网络请求(例:星座运势app实现)
上一节给大家讲了一个比较无聊的东西,这节就会派上用场了,哈哈,今天给大家讲解的是网络请求,我们做的APP很少是单机的App吧,一般情况下多多少少都会用到一些网络请求,而他具体是怎么实现的呢?今天我们来 ...
- Xamarin.Android之封装个简单的网络请求类
http://doc.okbase.net/catcher1994/archive/220195.html Catcher8 2016/4/23 0:28:50 阅读(72) 评论(0) 一.前言 回 ...
- Android之封装好的异步网络请求框架
1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnection,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使 ...
- Android肝帝战纪之网络请求框架封装(Retrofit的封装)
网络请求框架封装(OkHttp3+Retrofit+loading的封装) Retrofit的Github链接 点此链接到Github AVLoadingIndicatorView的Github链接( ...
- Android强制在主线程进行网络请求
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVie ...
- Android OkHttp+Retrofit+Rxjava+Hilt 的网络请求封装
今天给大家简单的封装一个现在比较流行的网络请求框架 第一步是导入我们所需要的依赖还需要在android {}闭包下添加一个 buildFeatures{viewBinding true } imple ...
- Android 利用an框架快速实现网络请求(含下载上传文件)
作者:Bgwan 链接:https://zhuanlan.zhihu.com/p/22573081 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架 ...
最新文章
- ddd架构 无法重构_漫谈分层架构:为什么要进行架构分层?
- Depth-aware CNN
- CentOS6挂载读写NTFS分区(ntfs-3g)
- nginx tomcat集群实现session共享
- 3rd 逻辑运算符的基本用法
- 吴忠军 - 如何理解马云所说的月入两三万,三四万的人最幸福?
- java接收json字符串_JAVA后台接收前台传过来的json字符串并解析获得key 和value
- 《Java编程思想》读书笔记-对象导论
- 算法:动态规划 最大连续子数组和 Maximum Subarray
- android 基础布局
- 网络安全扫盲贴 史上最全网络安全问题解答
- 自动化早已不是那个自动化了,谈一谈自动化测试现状和自我感受……
- JVM垃圾回收——ZGC垃圾收集器
- oracle怎么条件强制走索引,如何让oracle的select强制走索引
- react前端ui的使用_使用React Morph变形UI过渡
- Element UI Element Plus之改变表格单元格颜色
- OSChina 周二乱弹 —— 你每天的工作就是摁电脑?
- 【大咖发声】推荐一本书,我自己写的书
- Meta仿真 Habitat-Sim使用文档
- 拼团秒杀功能,小程序商城能比得过拼多多吗?