android listview 单选功能

简介: android listview 单选功能

单选功能  提供Adapter的 处理代码


实现的思路是 用一个 map 保存下刚才选择的position  item, 在adapter里面 设置  选中状态的时候  从 map里面获取。再次点击选择其他position的item的时候,将map中上一次 保存的 position的item删掉,最后一次点击的position 在每次点击的时候用一个单独的变量保存。  在点击事件里面重新notify当前 adapter 。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.ccvideo.R;
import com.yizhibo.video.bean.pay.OptionListEntity;
public class ExchangeCoinsAdapter extends BaseAdapter {
    private Context context;
    private List<OptionListEntity> mList;
    private Map<Integer, Boolean> isCheckMap = new HashMap<Integer, Boolean>();
    private int lastPosition;
    private int checkedRmb;
    public ExchangeCoinsAdapter(Context context) {
        this.context = context;
        mList = new ArrayList<OptionListEntity>();
    }
    public void setData(List<OptionListEntity> list) {
        mList = list;
    }
    @Override
    public int getCount() {
        return mList.size();
    }
    @Override
    public Object getItem(int i) {
        return null;
    }
    @Override
    public long getItemId(int i) {
        return i;
    }
    @Override
    public View getView(final int i, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder = null;
        if (view == null) {
            view = LayoutInflater.from(context).inflate(R.layout.item_exchange_coins, viewGroup, false);
            viewHolder = new ViewHolder();
            viewHolder.exchangeCoinsTv = (TextView) view.findViewById(R.id.exchange_coins_tv);
            viewHolder.exchangeGiveCoinsTv = (TextView) view.findViewById(R.id.exchange_coins_give_tv);
            viewHolder.exchangeMoneyCb = (CheckBox) view.findViewById(R.id.exchange_money_tv);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        final OptionListEntity model = mList.get(i);
        viewHolder.exchangeCoinsTv.setText(context.getString(R.string.e_coin_count_rear, model.getEcoin()));
        viewHolder.exchangeGiveCoinsTv
                .setText(context.getString(R.string.e_coin_give_count_rear, model.getFree()));
        viewHolder.exchangeMoneyCb
                .setText(context.getString(R.string.cash_count_simple, model.getRmb() / 100));
        viewHolder.exchangeMoneyCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (isCheckMap.size() > 0) {
                    isCheckMap.remove(lastPosition);
                }
                checkedRmb = model.getRmb();
                isCheckMap.put(i, true);
                lastPosition = i;
                ExchangeCoinsAdapter.this.notifyDataSetChanged();
            }
        });
        if (isCheckMap != null && isCheckMap.containsKey(i)) {
            viewHolder.exchangeMoneyCb.setSelected(isCheckMap.get(i));
        } else {
            viewHolder.exchangeMoneyCb.setSelected(false);
        }
        return view;
    }
    public int getCheckedRmb() {
        return checkedRmb;
    }
    protected static class ViewHolder {
        TextView exchangeCoinsTv;
        TextView exchangeGiveCoinsTv;
        CheckBox exchangeMoneyCb;
    }
}


相关文章
|
8月前
|
数据库 Android开发
Android使用EditText+Listview实现搜索效果(使用room模糊查询)
本文介绍如何在Android中使用EditText与ListView实现搜索功能,并结合Room数据库完成模糊查询。主要内容包括:Room的模糊查询语句(使用`||`代替`+`号)、布局美化(如去除ListView分割线和EditText下划线)、EditText回车事件监听,以及查询逻辑代码示例。此外,还提供了相关扩展文章链接,帮助读者深入了解ListView优化、动态搜索及Room基础操作。
581 65
|
9月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
Android开发
Android开发表情emoji功能开发
本文介绍了一种在Android应用中实现emoji表情功能的方法,通过将图片与表情字符对应,实现在`TextView`中的正常显示。示例代码展示了如何使用自定义适配器加载emoji表情,并在编辑框中输入或删除表情。项目包含完整的源码结构,可作为开发参考。视频演示和源码详情见文章内链接。
357 4
Android开发表情emoji功能开发
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
562 3
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
1694 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
Android开发 开发者
Android平台无纸化同屏如何实现实时录像功能
Android平台无纸化同屏,如果需要本地录像的话,实现难度不大,只要复用之前开发的录像模块的就可以,对我们来说,同屏采集这块,只是数据源不同而已,如果是自采集的其他数据,我们一样可以编码录像。
165 0
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
343 2
|
Android开发
Android中如何快速的实现RecycleView的拖动重排序功能
使用`ItemTouchHelper`和自定义`Callback`,在`RecyclerView`中实现拖动排序功能。定义`ItemTouchHelperAdapter`接口,`Adapter`实现它以处理`onItemMove`方法。`SimpleItemTouchHelperCallback`设置拖动标志,如`LEFT`或`RIGHT`(水平拖动),并绑定到`RecyclerView`以启用拖动。完成这些步骤后,即可实现拖放排序。关注公众号“AntDream”获取更多内容。
422 3
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
507 2

热门文章

最新文章