listView 单选实现

简介: 上一篇知道可以使用android自带的listview的chiocemode的单选模式实现。但那个布局是系统自带的checkedTextView,有时候我们需要自己实现布局,那么下面我们开始实现   自定义组合布局,实现checkable接口。
上一篇知道可以使用android自带的listview的chiocemode的单选模式实现。但那个布局是系统自带的checkedTextView,有时候我们需要自己实现布局,那么下面我们开始实现
 
自定义组合布局,实现checkable接口。
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
 
  1. public class SingleView extends LinearLayout implements Checkable {  
  2.   
  3.      private TextView mText;  
  4.      private CheckBox mCheckBox;  
  5.      public SingleView(Context context, AttributeSet attrs, int defStyle) {  
  6.             super(context, attrs, defStyle);  
  7.            initView(context);  
  8.      }  
  9.   
  10.      public SingleView(Context context, AttributeSet attrs) {  
  11.             super(context, attrs);  
  12.            initView(context);  
  13.      }  
  14.   
  15.      public SingleView (Context context) {  
  16.             super(context);  
  17.            initView(context);  
  18.      }  
  19.   
  20.      private void initView(Context context){  
  21.             // 填充布局  
  22.            LayoutInflater inflater = LayoutInflater.from(context);  
  23.            View v = inflater.inflate(R.layout.item_single_layout , this, true);  
  24.             mText = (TextView) v.findViewById(R.id. title);  
  25.             mCheckBox = (CheckBox) v.findViewById(R.id. checkbox);  
  26.      }  
  27.   
  28.      @Override  
  29.      public void setChecked( boolean checked) {  
  30.             mCheckBox.setChecked(checked);  
  31.              
  32.      }  
  33.   
  34.      @Override  
  35.      public boolean isChecked() {  
  36.             return mCheckBox.isChecked();  
  37.      }  
  38.   
  39.      @Override  
  40.      public void toggle() {  
  41.             mCheckBox.toggle();  
  42.      }  
  43.        
  44.      public void setTitle(String text){  
  45.             mText.setText(text);  
  46.      }  
  47. }  
 
activity中试下代码:
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
 
  1. public class MainActivity extends Activity {  
  2.      private ArrayList<String> groups;  
  3.      private ListView listView;  
  4.   
  5.      @Override  
  6.      protected void onCreate(Bundle savedInstanceState) {  
  7.             super.onCreate(savedInstanceState);  
  8.            setContentView(R.layout. activity_main);  
  9.   
  10.             listView = (ListView) findViewById(R.id. listView);  
  11.   
  12.             groups = new ArrayList<String>();  
  13.             groups.add( "11");  
  14.             groups.add( "22");  
  15.             groups.add( "33");  
  16.             groups.add( "44");  
  17.             groups.add( "55");  
  18.             groups.add( "66");  
  19.             groups.add( "77");  
  20.             groups.add( "88");  
  21.             groups.add( "99");  
  22.             groups.add( "00");  
  23.   
  24.            SingleAdapter singleAdapter = new SingleAdapter();  
  25.             listView.setAdapter(singleAdapter);  
  26.   
  27.            Button button = (Button) findViewById(R.id. button);  
  28.            button.setOnClickListener( new OnClickListener() {  
  29.   
  30.                  @Override  
  31.                  public void onClick(View v) {  
  32.                      PickNum();  
  33.                 }  
  34.            });  
  35.      }  
  36.   
  37.      private void PickNum() {  
  38.             int position = listView.getCheckedItemPosition();  
  39.             if (ListView. INVALID_POSITION != position) {  
  40.                 Toast. makeText(MainActivity.this, groups.get(position), 0).show();  
  41.            }  
  42.      }  
  43.   
  44.      private class SingleAdapter extends BaseAdapter {  
  45.   
  46.             @Override  
  47.             public int getCount() {  
  48.                  return groups.size();  
  49.            }  
  50.   
  51.             @Override  
  52.             public Object getItem( int position) {  
  53.                  // TODO Auto-generated method stub  
  54.                  return null;  
  55.            }  
  56.   
  57.             @Override  
  58.             public long getItemId( int position) {  
  59.                  // TODO Auto-generated method stub  
  60.                  return 0;  
  61.            }  
  62.   
  63.             @Override  
  64.             public View getView( final int position, View convertView,  
  65.                      ViewGroup parent) {  
  66.                  final SingleView singleView = new SingleView(MainActivity.this );  
  67.                 singleView.setTitle( groups.get(position));  
  68.                  return singleView;  
  69.   
  70.            }  
  71.   
  72.      }  
  73. }  

效果:
 
如果要替换默认checkbox的图标显示,设置checkbox的button属性即可。
 
附件:
http://download.csdn.net/detail/knxw0001/7961143
目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
大模型开发:解释强化学习以及它与监督学习的不同之处。
强化学习(RL)是机器学习的一种,通过智能体与环境交互学习最优策略,以获取最大回报,常用于动态环境如游戏和机器人。与之不同,监督学习(SL)使用有标签的训练数据来预测新数据,适用于如图像分类等稳定问题。两者关键区别在于学习方式和应用场景:RL侧重环境交互和策略优化,适合未知动态环境;SL依赖已知标签数据,适合标签明确的任务。在大模型开发中,两者各有优势,并不断融合创新,推动人工智能发展。
721 2
|
8月前
|
机器学习/深度学习 人工智能 物联网
TransPixar AI
TransPixar是由Adobe研究院与香港科技大学合作开发的AI系统,专注于文本到视频生成,特别擅长处理透明效果。它能生成包含Alpha通道的RGBA视频,使烟雾、反射等元素自然融入场景。采用扩散变换器架构和低秩适应微调方法,确保RGB和Alpha通道的一致性。该技术简化了视觉特效制作流程,降低了成本,并在娱乐、广告等领域有广泛应用前景。在线体验demo:[TransPixar](https://transpixar-ai.net/)。
|
机器学习/深度学习 人工智能 自然语言处理
谷歌AI Gemini 官方网站是什么?国内如何使用Gemini 1.5 pro
Gemini是Google开发的先进大型语言模型(LLM),旨在处理多种自然语言处理任务,如文本生成、翻译、摘要和对话生成。作为Google AI项目的一部分,Gemini结合了最新的研究成果和技术,显著提高了自然语言处理的准确性和效率。该模型经过大量文本数据的训练,使其能够理解和生成高质量的文本。
|
安全 物联网 数据安全/隐私保护
WLAN和WiMax之间的区别
【8月更文挑战第23天】
331 0
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
《人工智能知识图谱构建与应用的最新突破与成果》
在人工智能蓬勃发展的背景下,知识图谱的构建与应用成为热点。新技术如基于大语言模型和向量库的方法,提升了实体识别、关系抽取及图谱优化的效率和精度。这些创新已在医疗、电力、信息检索等领域取得显著成效,如思通数科平台使病例处理速度提升40%,国网湖北电力提高信息检索准确性。未来,知识图谱将更高效、智能地处理多模态数据,并在金融、教育等更多领域发挥重要作用,但也需关注数据隐私和安全问题。
394 9
|
弹性计算 安全
停止使用云服务通常需要遵循以下步骤
停止使用云服务通常需要遵循以下步骤
768 2
详尽分享马卡龙色色卡及其十六进制代码
详尽分享马卡龙色色卡及其十六进制代码
473 0
|
人工智能 自然语言处理 监控
AI大模型智能体工作流涉及使用Ollama和FastGPT这两个工具
AI大模型智能体工作流涉及使用Ollama和FastGPT这两个工具
1264 4
|
存储 机器学习/深度学习 监控
阿里云的主要云产品和服务有哪些?
阿里云提供的云产品和服务多达几百款,从分类上来说主要分为弹性计算、数据库、存储、网络、大数据、人工智能、云安全、互联网中间件、云分析、管理与监控、应用服务、视频服务、移动服务、云通信、域名与网站、行业解决方案等,每个分类下的主要云产品和服务如下
3456 0