商务服务
Android 天气APP(十五)增加城市搜索、历史搜索记录
2025-01-01 16:17

上一篇:Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示

在上一篇文章中完成了管理城市的部分功能,添加城市的功能还没有实现,本篇文章中将做添加城市部分功能,我们在选择城市的时候,通常会选择一些比较热门的城市,例如北上广深之类的,那么我们添加城市的时候也可以从热门城市中去添加。

  首先我们需要一些推荐城市数据,可以定义一个数组,在Constant中新增如下代码

 

这是一个数组常量,后面添加城市的时候可以从这里面选。

现在数据有了,创建列表item布局,下面在layout下新建一个item_recommend_city.xml,里面的代码如下

 

这里就是一个TextView,我们通过布局管理器变成一行三个,后面会看到,现在item的布局有了,下面写适配器。在adapter包下新建一个RecommendCityAdapter 类,代码如下所示

 
 

我的想法是在点击添加城市按钮时,出现一个底部弹窗,这个弹窗中显示推荐城市数据列表,这样就不用多写一个Activity了,下面我们创建弹窗的布局,在layout下新建一个dialog_add_city.xml,代码如下所示

 

下面utils包下创建一个添加城市弹窗的AddCityDialog类,代码如下所示

 

这个弹窗的代码还是很简单的,又不同于之前的代码,看看怎么使用。

修改一下ManageCityActivity的initView()方法中的添加城市按钮点击监听代码,如下所示

 

之前是点击之后就提示添加城市,现在点击之后显示一个弹窗,然后在弹窗中选择了城市之后,会提示选择的城市是什么,运行看一下

现在虽然可以显示数据,可以提示点击的城市了,但是并没有去搜索城市添加,同时也没有添加到我的城市数据库中,所以,下面要做的就是完成这两个操作。

还记得之前保存城市数据是在哪里吗?在主页面定位返回中,所以如果当前页面要保存城市数据,则页面对应的ViewModel需要先有方法才行,在ManageCityViewModel中添加如下方法代码

 

然后回到之前的点击按钮方法中,修改代码如下所示

 

这里就在点击的时候调用了保存到数据库的方法,那么搜索天气只需要再后面再加上几行代码即可。

 

你会发现这里新增的代码和之前类似,只不过值一样,如下图所示

 

然后刚才的两个地方就调用即可,如下图所示

运行看一下

欢迎 StarFork

第十五篇文章源码地址: GoodWeather-New-15

看这篇文章之前,你是否是一路看过来的呢?如果你单独看着一篇的话,有些内容你可能看不懂,所以我建议你一篇一篇的看,这是第十五篇文章了,前面还有十四篇,建议先了解一下,传送门
天气APP-专栏
在我思虑良久之后决定加一个城市的搜索功能,反正有现成的API,不用白不用,我白嫖侠是不放过任何一个可以白嫖的机会。

城市搜索,我是打算新建一个Activity来专门做这个功能,继续在原来的MainActivity中写的话,就太麻烦了,可能自己看着也会觉得太多代码了,不爽,至于新开启一个页面写的话,就会有两个页面的数据交互方面的问题,这也是本文中的重点讲解对象,至于搜索的那些,都是可以轻松实现的,你说呢?闲话少说,言归正传,这自然又需要一个新的API接口了。

 

然后是创建一个接收返回数据的实体bean,SearchCityResponse
代码如下

 
 
 

记住要用自己的key

 
 
 

布局代码如下

 
 
 

适配器写完了,下面写搜索页面的布局已经做数据渲染显示出来。

搜索页面也是有两个图标的

 

shape_gray_bg_14.xml 修改顶部布局的背景样式

 
 
 

这个输入框我这里有必要讲解一些

**android:imeOptions=“actionSearch”**就是将软键盘的回车改为搜索,这样可以增加用户的体验

接下来是SearchCityActivity.java页面代码的编写

先绑定布局文件中的控件

 

然后定义

 
 

initData

 

getLayoutId

 

createPresent

 

getSearchCityResult

 

getDataFailed

 

初始化列表

 

初始化输入框

 

textWatcher

 

点击事件

 

你可以将原来的onCreate()方法给删掉了。然后将我粘贴出来的代码复制进去就OK了,轻松愉快。

 

改动build.gradle记得Sync一下

其实这个EventBus和广播差不多,不过也有区别,它的用法是,在哪个页面接收消息,就在哪个页面绑定和解绑消息。
下面来运用一下,首先是在项目包下创建一个eventbus包,包下创建一个SearchCityEvent的消息类

 

然后就是使用了,发送消息方,我们在SearchCityActivity中的item点击的时候发送消息

 
 
 
 
 
 

首先使我们点击输入框的时候出现上一次输入的文字,可以设置一个默认的值,比如深圳有两个方法,一个是初始化数据,另一个是保存输入到的数据
首先创建item的布局
item_tv_history.xml

 

也比较简单,就一个TextView

然后就会业务代码了,代码如下

 
 
 
 
 
 

RecordsDao

 

RecordSQLiteOpenHelper

 

TagAdapter

 

TagFlowLayout

 

TagView

 

现在创建布局和样式
shape_gray_bg_16.xml

 

tv_history.xml

 
 
 
 

布局有了,下面就是写代码了
然后就是在SearchCity中使用了
首先绑定视图

 

然后编写代码

 

这里面还有一个提示弹窗

 

当然还有点击事件也要修改

 

这个点击事件的代码你可以把原来的点击事件直接覆盖掉

为了不造成误会,我再粘贴一下SearchCityActivity的代码

 
 

源码地址:GoodWeather
欢迎 StarFork

    以上就是本篇文章【Android 天气APP(十五)增加城市搜索、历史搜索记录】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/14409.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
过年无忧 | 一键get这些春节话术!
一键Get这些春节话术~过年无忧新年快乐春节将至,年味渐浓在这温馨又热闹的节日氛围里我们既能品尝各式各样的美味佳肴沉浸于味
2025在新加坡生活的我们将迎来“至暗时刻”:房租飙涨、每个月入不敷出…
聚焦新加坡真是开年暴击!2025年刚开始,还没过新年呢,万事通就出了一身冷汗:今年又是一个物价涨涨涨的年份。在网上一搜“新加
太抽象!太抽象!2024年游戏行业简直太抽象!
年末,DataEye研究院今天整点活,轻松一波。——用数据、新闻盘点2024年国内游戏业有多抽象。回首2024年有产品研发8年烧了数亿,
TikTok会如何收场
TikTok的命运再次悬而不决。在美国下架12小时又恢复运营之后,1月20日,美国总统特朗普签署行政命令,要求TikTok「不卖就禁」法
今天上午10:00,成绩发布!
早安,东台!‍今天是2025年1月22日‍星期三(农历腊月廿三)大美东台,活力满满进取创新、奋斗拼搏最近有哪些新动态?和小东一
农村土地托管服务的理论基础
中国产品流通经纪人协会供销合作行业标准《农产品食品供应商信用评价规范》参编单位征集函中国农产品流通经纪人协会供销合作行业
头上三尺有神明,每个人头顶都有一颗星,当星光消失人也就消失!
每当夜晚降临后,我们抬头看天空,会看到满天的星星,自古以来,人们从没有停止过对星象的观测和研究。古人观测星象,一则是为了
运营师抖音代运营
运营师抖音代运营:掌握流行短视频潮流的神奇职业短视频平台已经成为人们娱乐、学习和社交的重要方式。在众多的短视频平台中,抖
微短剧,2024年“最大赢家”? | 年终盘点
2024,短剧行业大变样。作者 | 张语格编辑 | 趣解商业文娱组“互联网大厂争相入局。”“98%的短剧制作方都在亏钱。”“用户被免
同类第一!20%弹性的人工智能 ETF 科创(588760)今日上市,一键布局科创板优质AI龙头
  最新公告内容显示,广发上证科创板交易型开放式指数投资基金(基金代码:588760;扩位简称: ETF 科创)已于 2025 年 1 月 1