上一篇知道可以使用android自带的listview的chiocemode的单选模式实现。但那个布局是系统自带的checkedTextView,有时候我们需要自己实现布局,那么下面我们开始实现

 
自定义组合布局,实现checkable接口。
  1. public class SingleView extends LinearLayout implements Checkable {
  2. private TextView mText;
  3. private CheckBox mCheckBox;
  4. public SingleView(Context context, AttributeSet attrs, int defStyle) {
  5. super(context, attrs, defStyle);
  6. initView(context);
  7. }
  8. public SingleView(Context context, AttributeSet attrs) {
  9. super(context, attrs);
  10. initView(context);
  11. }
  12. public SingleView (Context context) {
  13. super(context);
  14. initView(context);
  15. }
  16. private void initView(Context context){
  17. // 填充布局
  18. LayoutInflater inflater = LayoutInflater.from(context);
  19. View v = inflater.inflate(R.layout.item_single_layout , this, true);
  20. mText = (TextView) v.findViewById(R.id. title);
  21. mCheckBox = (CheckBox) v.findViewById(R.id. checkbox);
  22. }
  23. @Override
  24. public void setChecked( boolean checked) {
  25. mCheckBox.setChecked(checked);
  26. }
  27. @Override
  28. public boolean isChecked() {
  29. return mCheckBox.isChecked();
  30. }
  31. @Override
  32. public void toggle() {
  33. mCheckBox.toggle();
  34. }
  35. public void setTitle(String text){
  36. mText.setText(text);
  37. }
  38. }
 
activity中试下代码:
  1. public class MainActivity extends Activity {
  2. private ArrayList<String> groups;
  3. private ListView listView;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout. activity_main);
  8. listView = (ListView) findViewById(R.id. listView);
  9. groups = new ArrayList<String>();
  10. groups.add( "11");
  11. groups.add( "22");
  12. groups.add( "33");
  13. groups.add( "44");
  14. groups.add( "55");
  15. groups.add( "66");
  16. groups.add( "77");
  17. groups.add( "88");
  18. groups.add( "99");
  19. groups.add( "00");
  20. SingleAdapter singleAdapter = new SingleAdapter();
  21. listView.setAdapter(singleAdapter);
  22. Button button = (Button) findViewById(R.id. button);
  23. button.setOnClickListener( new OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. PickNum();
  27. }
  28. });
  29. }
  30. private void PickNum() {
  31. int position = listView.getCheckedItemPosition();
  32. if (ListView. INVALID_POSITION != position) {
  33. Toast. makeText(MainActivity.this, groups.get(position), 0).show();
  34. }
  35. }
  36. private class SingleAdapter extends BaseAdapter {
  37. @Override
  38. public int getCount() {
  39. return groups.size();
  40. }
  41. @Override
  42. public Object getItem( int position) {
  43. // TODO Auto-generated method stub
  44. return null;
  45. }
  46. @Override
  47. public long getItemId( int position) {
  48. // TODO Auto-generated method stub
  49. return 0;
  50. }
  51. @Override
  52. public View getView( final int position, View convertView,
  53. ViewGroup parent) {
  54. final SingleView singleView = new SingleView(MainActivity.this );
  55. singleView.setTitle( groups.get(position));
  56. return singleView;
  57. }
  58. }
  59. }
效果:

 
如果要替换默认checkbox的图标显示,设置checkbox的button属性即可。
 
附件:

http://download.csdn.net/detail/knxw0001/7961143

listView 单选实现的更多相关文章

  1. ListView单选的实现总结(转)

    今天在智能停车场项目中需要实现PullToRefreshListView的单选功能,考虑到分页,刷新等,以前的实现方式是采用自己维护一个集合保存选中位置的选中状态,但这个方式比较繁琐,今天采用了lis ...

  2. ListView 自己定义BaseAdapter实现单选打勾(无漏洞)

    (假设须要完整demo,请评论留下邮箱) (眼下源代码已经不发送.假设须要源代码,加qq316701116.不喜勿扰) 近期由于一个项目的原因须要自己定义一个BaseAdapter实现ListVIew ...

  3. Android录屏命令、Android录Gif、Android录视频

    NoHttp开源地址:https://github.com/yanzhenjie/NoHttp NoHttp具体使用文档已公布,你想知道的全都有,请点我移步! 版权声明:转载请注明本文转自严振杰的博客 ...

  4. Android在listview添加checkbox实现单选多选操作问题(转)

    转自:http://yangshen998.iteye.com/blog/1310183 在Android某些开发需求当中,有时候需要在listveiw中加入checkbox实现单选,多选操作.表面上 ...

  5. 本地数据下,radiobutton和图片组合,利用adapter+listview进行单选

    浮生偷得半日闲,等接口定义的过程中,重新复习下adapter+listview实现单选的方法 主界面 <RelativeLayout xmlns:android="http://sch ...

  6. ListView 实现多选/单选

    http://blog.csdn.net/ljfbest/article/details/40685327 ListView自身带了单选.多选模式,可通过listview.setChoiceMode来 ...

  7. 【转】ListView与RadioButton组合——自定义单选列表

    原文网址:http://blog.csdn.net/checkin001/article/details/11519131 Android自带的RadioButton单选框只支持添加文字,我们自己写A ...

  8. ListView与RadioButton组合——自定义单选列表

      标签: radiobuttonlistviewandroidlayout 2013-09-10 11:13 19396人阅读 评论(8) 收藏 举报  分类: Android(19)  版权声明: ...

  9. C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

    C# winform项目中ListView控件使用CheckBoxes属性实现单选功能 在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes ...

随机推荐

  1. asp生命周期

    笔记:如果不对,欢迎指出来. 当一个用户访问一个页面,实际是发送http请求到服务器,而http请求其实是socket发送特定规范(协议)的文字(报文). 然后服务器的http.sys内核模块接受 请 ...

  2. Struct和Class的区别

    转载至:http://blog.csdn.net/yuliu0552/article/details/6717915 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数 ...

  3. codeforces #332 div2

    A. #include<cstdio> #include<algorithm> #include<cmath> #include<map> #inclu ...

  4. stack 集合栈计算机 (摘)

    有一个专门为了集合运算而设计的“集合栈”计算机.该机器有一个初始为空的栈,并且支持以下操作:PUSH:空集“{}”入栈DUP:把当前栈顶元素复制一份后再入栈UNION:出栈两个集合,然后把两者的并集入 ...

  5. [Effective Modern C++] Item 4. Know how to view deduced types - 知道如何看待推断出的类型

    条款四 知道如何看待推断出的类型 基础知识 有三种方式可以知道类型推断的结果: IDE编辑器 编译器诊断 运行时输出 使用typeid()以及std::type_info::name可以获取变量的类型 ...

  6. Java三大特征之继承(二)

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  7. C语言-运算符与表达式

    运算符分类: 算术运算符:+   -  *    /          % 关系运算符:>  <  =  <=  >= ==  != 逻辑运算符:&& || ! ...

  8. SQL Server中in与exist效率比较

    in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询. 一直以来认为exists比in效率高的说法是不准确的. 如果查询的两 ...

  9. 获取所有树叶子节点 注册添加事件 if ($(node).tree('isLeaf', node.target)) 是否叶子节点

    //获取所有树叶子节点 注册添加事件 if ($(node).tree('isLeaf', node.target)) 是否叶子节点 $(function () { $('.easyui-tree') ...

  10. Sql Server专题三:SQL操作与技巧

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...