2024年安卓最全手把手教你实现GridView中Checkbox全选(1),3面直接拿到offer

最后

跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值