学习福利
【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方法。
其次就是在接收事件的时候再加载一次数据,因为我在常用城市中添加数据之后会发起事件,然后关闭常用城市页面,回到主页面,此时需要把数据加载一下,后面会演示一下。
因为我是点击城市触发常用城市列表的判断处理,因此之前的代码需要修改一下,有两处,在initData中
在onReceiveLocation方法中
最后在tv_city的点击事件中先判断当前城市是否定位到,定位到则判断有无数据,有数据则可以判断点击后不同的控件样式。
最后
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
Android 基础知识点
Java 基础知识点
Android 源码相关分析
常见的一些原理性问题
希望大家在今年一切顺利,进到自己想进的公司,共勉!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Android 基础知识点
Java 基础知识点
Android 源码相关分析
常见的一些原理性问题
[外链图片转存中…(img-TT8Op6s0-1715363471955)]
希望大家在今年一切顺利,进到自己想进的公司,共勉!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!