GridView与CheckBox的那些问题

博客主要围绕GridView展开,一是解决上滑加载时的局部刷新问题,避免全局刷新导致当前item位置改变;二是处理GridView中每个item里checkbox的选中问题,包括点击时多个item显示选中、滑动页面多次调用以及加载数据时选中item保持不变等问题,并给出相应解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,GridView上滑加载时实现局部刷新不是全局刷新

每次加载数据都调用rvPushwork.setAdapter(accountBOEAdapter);时都是实现整个页面的全部刷新,比如:在滑到某一个item是,上滑加载更多数据时,会跳到第一个item,显然,这不是我们想要的结果,我们想要的是滑动到某一个item时,加载更多的情况下,当前item位置不变

       account_boe_listBean = new Gson().fromJson(response, GetAccount_Boe_ListBean.class);
                        if (CurrentIndex == 1) {
                            boeList.clear();
                        }
                        if (accountBOEAdapter == null)
                            accountBOEAdapter = new AccountBOEAdapter();
                        boeList.addAll(account_boe_listBean.getData());
                        if(CurrentIndex == 1){
                            rvPushwork.setAdapter(accountBOEAdapter);
                        }
                            accountBOEAdapter.notifyDataSetChanged();

主要调用的就是

accountBOEAdapter.notifyDataSetChanged();来实现刷新的

二,GridView中每个item中有checkbox,点击checkbox时,会有好几个item显示已选中,滑动页面时会调用多次

setOnCheckedChangeListener事件

解决办法:

viewHolder.cbImg.setOnCheckedChangeListener(null);
if (boeList.get(i).getCheck()) {
    viewHolder.cbImg.setChecked(true);
} else {
    viewHolder.cbImg.setChecked(false);
}

还有一个问题,就是选中的item,在加载数据时,选中的item不变

用到的就是

if (boeList.get(i).getCheck()) {
    viewHolder.cbImg.setChecked(true);
} else {
    viewHolder.cbImg.setChecked(false);
}

先在实体类中默认全部Check为false,点击选中的时候设置为true,即可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值