最后
文章不易,如果大家喜欢这篇文章,或者对你有帮助希望大家多多点赞转发关注哦。文章会持续更新的。绝对干货!!!
- Android进阶学习全套手册
关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。目前,我手头上整理到的电子书还算比较全面,HTTP、自定义view、c++、MVP、Android源码设计模式、Android开发艺术探索、Java并发编程的艺术、Android基于Glide的二次封装、Android内存优化——常见内存泄露及优化方案、.Java编程思想 (第4版)等高级技术都囊括其中。
-
Android高级架构师进阶知识体系图
关于视频这块,我也是自己搜集了一些,都按照Android学习路线做了一个分类。按照Android学习路线一共有八个模块,其中视频都有对应,就是为了帮助大家系统的学习。接下来看一下导图和对应系统视频吧!!!
-
Android对标阿里P7学习视频
- BATJ大厂Android高频面试题
这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
package cn.itcast.db;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import cn.itcast.domain.Person;
import cn.itcast.domain.PersonAdapter;
import cn.itcast.service.PersonService;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
//在Android平台上,集成了一个嵌入式关系型数据库——SQLite
//SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型
//虽然它支持的类型只有5种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p, s)等数据
//只不过在运行或保存时会转成对应的五种数据类型
//SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么
private ListView lstShow;
private PersonService personService;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
personService \= new PersonService(this);
lstShow \= (ListView)this.findViewById(R.id.lstShow);
lstShow.setOnItemClickListener(new ItemClickListener());
//show();
//show2();
show3();
}
private final class ItemClickListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
ListView lView \= (ListView)parent;
//和show()3配对
Person person = (Person)lView.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), person.getId().toString(), 1).show();
//和show()2配对
Cursor cursor = (Cursor)lView.getItemAtPosition(position);
int personId = cursor.getInt(cursor.getColumnIndex("\_id"));
Toast.makeText(getApplicationContext(), personId, 1).show();
//和show()配对
List<HashMap<String, Object>> hashMap = (List<HashMap<String, Object>>)lView.getItemAtPosition(position);
int Id = Integer.valueOf(hashMap.get(personId).get("personId").toString());
Toast.makeText(getApplicationContext(), Id, 1).show();
}
}
//自定义适配器
private void show3() {
List<Person> persons = personService.getScrollData(0, 20);
PersonAdapter adapter \= new PersonAdapter(this, persons, R.layout.item);
lstShow.setAdapter(adapter);
}
private void show2() {
Cursor cursor \= personService.getCursorScrollData(0, 20);
SimpleCursorAdapter adapter \=
new SimpleCursorAdapter(this, R.layout.item, cursor,
new String\[\]{"name", "phone", "amount"},
new int\[\]{R.id.txtName, R.id.txtPhone, R.id.txtAmount});
lstShow.setAdapter(adapter);
//直接运行会报错,原因是SimpleCursorAdapter要求结果集中必须包含\_id字段
//修复方法:1.把数据库表中的主键名称personId改为\_id
//2.处理查询后的结果集
}
private void show() {
List<Person> persons = personService.getScrollData(0, 20);
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for(Person person : persons){
HashMap<String, Object> item = new HashMap<String, Object>();
item.put("name", person.getName());
item.put("phone", person.getPhone());
item.put("amount", person.getAmount());
item.put("id", person.getId());
data.add(item);
}
SimpleAdapter adapter \= new SimpleAdapter(this, data, R.layout.item,
new String\[\]{"name", "phone", "amount"},
new int\[\]{R.id.txtName, R.id.txtPhone, R.id.txtAmount});
lstShow.setAdapter(adapter);
//listView内部操作过程
//{
// int total = adapter.getCount(); //用于得到数据总数
// int perpage = 7;
// for (int i = 0; i < perpage; i++) {
// View view = adapter.getView(i, convertView, parent); //用于得到条目对应的View
// //显示条目
// }
//}
}
}
package cn.itcast.domain;
import java.util.List;
import cn.itcast.db.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class PersonAdapter extends BaseAdapter {
private List<Person> persons; //绑定数据
private int resource; //绑定条目界面
private LayoutInflater inflater;
public PersonAdapter(Context context, List<Person> persons, int resouce){
this.persons = persons;
this.resource = resource;
inflater \= (LayoutInflater)context.getSystemService(Context.LAYOUT\_INFLATER\_SERVICE);
}
@Override
public int getCount() {
return persons.size(); //得到数据总数
}
@Override
public Object getItem(int position) {
return persons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView txtName \= null;
TextView txtPhone \= null;
TextView txtAmount \= null;
//这样提升性能
if(convertView == null){ //表明现在是第1页
inflater.inflate(resource, null); //生成条目界面对象
txtName \= (TextView)convertView.findViewById(R.id.txtName);
txtPhone \= (TextView)convertView.findViewById(R.id.txtPhone);
txtAmount \= (TextView)convertView.findViewById(R.id.txtAmount);
ViewCache cache \= new ViewCache();
总结
首先是感觉自己的基础还是不够吧,大厂好像都喜欢问这些底层原理。
另外一部分原因在于资料也还没有看完,一面时凭借那份资料考前突击恶补个几天居然也能轻松应对(在这里还是要感谢那份资料,真的牛),于是自我感觉良好,资料就没有怎么深究下去了。
之前的准备只涉及了Java、Android、计网、数据结构与算法这些方面,面对面试官对其他基础课程的考察显得捉襟见肘。
下一步还是要查漏补缺,进行针对性复习。
最后的最后,那套资料这次一定要全部看完,是真的太全面了,各个知识点都涵盖了,几乎我面试遇到的所有问题的知识点这里面都有!希望大家不要犯和我一样的错误呀!!!一定要看完!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
不要犯和我一样的错误呀!!!一定要看完!**
[外链图片转存中…(img-9kGCDA6b-1715632241191)]
[外链图片转存中…(img-O3Pd0xnt-1715632241192)]
[外链图片转存中…(img-YtJrz66z-1715632241192)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!