最后
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
}
public static void setIsSelected(HashMap<Integer,Boolean> isSelected) {
GridviewAdapter.isSelected = isSelected;
}
下面我们新建一个Activity来看看效果:
public class MainActivity extends Activity implements OnClickListener {
private GridView gd;
private GridviewAdapter mAdapter;
private ArrayList persons;
private Button bt_selectall;
private Button bt_cancel;
private Button bt_deselectall;
private Button bt_sumit;
private int checkNum; // 记录选中的条目数量
private TextView tv_show;// 用于显示选中的条目数量
List selectID = new ArrayList(); //选中的ID
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
gd.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
ViewHolder holder = (ViewHolder) arg1.getTag();
holder.cb.toggle();
GridviewAdapter.getIsSelected().put(arg2, holder.cb.isChecked());
if (holder.cb.isChecked() == true) {
checkNum++;
} else {
checkNum–;
}
tv_show.setText(“已选中” + checkNum + “项”);
}
});
}
/**
- 初始化数据
*/
private void initData() {
Person mPerson;
for (int i = 1; i <= 40; i++) {
mPerson = new Person();
mPerson.setName(“aikaifa” + i);
// mPerson.setId(Character.valueOf((char)(i+65))+" ");
mPerson.setId(i + “”);
persons.add(mPerson);
}
mAdapter = new GridviewAdapter(persons, this);
gd.setAdapter(mAdapter);
}
/**
- 刷新
*/
private void dataChanged() {
mAdapter.notifyDataSetChanged();
tv_show.setText(“已选中” + checkNum + “项”);
}
/**
- 初始化控件
*/
private void initView() {
gd = (GridView) findViewById(R.id.gd);
bt_selectall = (Button) findViewById(R.id.bt_selectall);
bt_cancel = (Button) findViewById(R.id.bt_cancelselectall);
bt_deselectall = (Button) findViewById(R.id.bt_deselectall);
bt_sumit = (Button) findViewById(R.id.bt_submit);
tv_show = (TextView) findViewById(R.id.tv);
persons = new ArrayList();
bt_selectall.setOnClickListener(this);
bt_cancel.setOnClickListener(this);
bt_deselectall.setOnClickListener(this);
bt_sumit.setOnClickListener(this);
}
/**
- 全选
*/
private void selectAll() {
for (int i = 0; i < persons.size(); i++) {
GridviewAdapter.getIsSelected().put(i, true);
}
// 数量设为list的长度
checkNum = persons.size();
dataChanged();
}
/**
- 全不选
*/
private void cancelselectall() {
// 遍历list的长度,将已选的按钮设为未选
for (int i = 0; i < persons.size(); i++) {
if (GridviewAdapter.getIsSelected().get(i)) {
GridviewAdapter.getIsSelected().put(i, false);
checkNum–;// 数量减1
}
}
dataChanged();
}
/**
- 反选
*/
private void deselectall() {
// 遍历list的长度,将已选的设为未选,未选的设为已选
for (int i = 0; i < persons.size(); i++) {
if (GridviewAdapter.getIsSelected().get(i)) {
GridviewAdapter.getIsSelected().put(i, false);
checkNum–;
} else {
GridviewAdapter.getIsSelected().put(i, true);
checkNum++;
}
}
dataChanged();
}
/**
- 提交
*/
private void submit() {
selectID.clear();
for (int i = 0; i < mAdapter.getIsSelected().size(); i++) {
if (mAdapter.getIsSelected().get(i)) {
selectID.add(persons.get(i).getId());
}
}
if (selectID.size() == 0) {
AlertDialog.Builder builder1 = new AlertDialog.Builder(
MainActivity.this);
builder1.setMessage(“没有选中任何记录”);
builder1.show();
} else {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < selectID.size(); i++) {
sb.append(“ID=” + selectID.get(i) + " ");
}
AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
builder2.setMessage(sb.toString());
builder2.show();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_selectall:
selectAll();
break;
case R.id.bt_cancelselectall:
cancelselectall();
break;
case R.id.bt_deselectall:
deselectall();
break;
case R.id.bt_submit:
submit();
break;
}
}
}
对应的activity_main.xml布局
<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:tools=“http://schemas.android.com/tools”
android:id=“@+id/LinearLayout1”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:orientation=“horizontal”
<Button
android:id=“@+id/bt_selectall”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“全选” />
<Button
android:id=“@+id/bt_cancelselectall”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“全不选” />
<Button
android:id=“@+id/bt_deselectall”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“反选” />
<Button
android:id=“@+id/bt_submit”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“提交” />
最后
为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力)
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。
加油,共勉。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。
加油,共勉。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!