最新Android 天气APP(三十二)快捷切换常用城市,2024年最新程序员面试问题大全及答案大全

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

selected_bg_radius.xml

<?xml version="1.0" encoding="utf-8"?>

selected_text_color.xml

<?xml version="1.0" encoding="utf-8"?>

item写完了,下面到适配器了。

在adapter包下新建一个MainChangeCommonlyCityAdapter类,代码如下:

package com.llw.goodweather.adapter;

import androidx.annotation.Nullable;

import com.chad.library.adapter.base.BaseQuickAdapter;

import com.chad.library.adapter.base.BaseViewHolder;

import com.llw.goodweather.R;

import com.llw.mvplibrary.bean.ResidentCity;

import java.util.List;

/**

  • 主页面左右滑动切换常用城市列表适配器

  • @author llw

*/

public class MainChangeCommonlyCityAdapter extends BaseQuickAdapter<ResidentCity, BaseViewHolder> {

public MainChangeCommonlyCityAdapter(int layoutResId, @Nullable List data) {

super(layoutResId, data);

}

@Override

protected void convert(BaseViewHolder helper, ResidentCity item) {

helper.setText(R.id.tv_city, item.getLocation())

.addOnClickListener(R.id.tv_city);

}

}

二、配置列表加载常用城市数据


刚才适配器写好了,然后进入到MainActivity中,再创建两个变量

//主页面切换城市列表适配器

private MainChangeCommonlyCityAdapter changeCityAdapter;

//常用城市切换列表

private List residentCityList = new ArrayList<>();

一个适配器一个数据列表,然后下面新增一个方法用于加载适配器数据并且渲染,还有点击事件。这里先查询数据,然后判断数据,之后渲染数据,最后是点击item之后搜索城市,然后查找天气数据。

/**

  • 加载常用城市数据

*/

private void loadingCommonlyUsedCity() {

residentCityList = LitePal.findAll(ResidentCity.class);

//先判断是否有常用城市

if (residentCityList != null && residentCityList.size() > 0) {

isChangeCity = true;

} else {

isChangeCity = false;

}

//配置适配器

changeCityAdapter = new MainChangeCommonlyCityAdapter(R.layout.item_main_city_change, residentCityList);

LinearLayoutManager manager = new LinearLayoutManager(context);

manager.setOrientation(RecyclerView.HORIZONTAL);

rvChangeCity.setLayoutManager(manager);

rvChangeCity.setAdapter(changeCityAdapter);

//常用城市点击

changeCityAdapter.setOnItemChildClickListener((adapter, view, position) -> {

showLoadingDialog();

district = residentCityList.get(position).getLocation();

mPresent.newSearchCity(district);

flag = false;

//隐藏列表

rvChangeCity.setVisibility(View.GONE);

changeCityState = false;

});

}

三、添加到常用城市列表


这里我判断了一下是否为定位城市的返回,是的话我就添加到数据库中,当然也不能重复添加数据,因此还需要判断一下。

/**

  • 添加到常用城市列表

  • @param locationBean

*/

private void addCommonlyUsedCity(NewSearchCityResponse.LocationBean locationBean) {

if (flag) {//定位到的城市

List residentCityList = LitePal.findAll(ResidentCity.class);

if (residentCityList != null && residentCityList.size() > 0) {

//查询要添加的城市是否已经存在

List residentCities = LitePal

.where(“location = ? and parent_city = ?”, locationBean.getName(), locationBean.getAdm2())

.find(ResidentCity.class);

if (residentCities.size() == 0) {

ResidentCity residentCity = new ResidentCity();

residentCity.setLocation(locationBean.getName());//地区/城市名称

residentCity.setParent_city(locationBean.getAdm2());//该地区/城市的上级城市

residentCity.setAdmin_area(locationBean.getAdm1());//该地区/城市所属行政区域

residentCity.setCnty(locationBean.getCountry());//该地区/城市所属国家名称

residentCity.save();//保存数据到数据库中

}

} else {

ResidentCity residentCity = new ResidentCity();

residentCity.setLocation(locationBean.getName());//地区/城市名称

residentCity.setParent_city(locationBean.getAdm2());//该地区/城市的上级城市

residentCity.setAdmin_area(locationBean.getAdm1());//该地区/城市所属行政区域

residentCity.setCnty(locationBean.getCountry());//该地区/城市所属国家名称

residentCity.save();//保存数据到数据库中

}

}

//加载常用城市数据

loadingCommonlyUsedCity();

}

在这里插入图片描述

然后你还需要在initData中调用loadingCommonlyUsedCity方法。

在这里插入图片描述

其次就是在接收事件的时候再加载一次数据,因为我在常用城市中添加数据之后会发起事件,然后关闭常用城市页面,回到主页面,此时需要把数据加载一下,后面会演示一下。

在这里插入图片描述

四、修改UI


因为我是点击城市触发常用城市列表的判断处理,因此之前的代码需要修改一下,有两处,在initData中

在这里插入图片描述

在onReceiveLocation方法中

在这里插入图片描述

最后在tv_city的点击事件中先判断当前城市是否定位到,定位到则判断有无数据,有数据则可以判断点击后不同的控件样式。

在这里插入图片描述

最后

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。

还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

Android 基础知识点

Java 基础知识点

Android 源码相关分析

常见的一些原理性问题

希望大家在今年一切顺利,进到自己想进的公司,共勉!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Android 基础知识点

Java 基础知识点

Android 源码相关分析

常见的一些原理性问题

[外链图片转存中…(img-TT8Op6s0-1715363471955)]

希望大家在今年一切顺利,进到自己想进的公司,共勉!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值