上一篇知道可以使用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

最新文章

  1. 多节点 devstack 部署
  2. ThinkPHP3.2.3--相对路径的写法
  3. NEC学习 ---- 模块 -水平文字链接列表
  4. c#开发Mongo笔记第八篇
  5. Java NIO 概述
  6. java线程之停止线程
  7. Objective-C类的使用
  8. opengl 扳回一球
  9. 【转载】深入Java单例模式
  10. js的addEvertLIstener方法
  11. vijos1101题解
  12. Python爬虫入门教程 60-100 python识别验证码,阿里、腾讯、百度、聚合数据等大公司都这么干
  13. ORM表相关操作
  14. 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法
  15. OneStopEnglish corpus: A new corpus for automatic readability assessment and text simplification-paper
  16. git patch 使用
  17. unity3d的优化场景技术LOD+IOC
  18. 001-Two Sum
  19. 第一章:什么是Linux
  20. shell之arp命令

热门文章

  1. Oracle数据库游标的类型
  2. 奇葩问题:spring+mybaits项目突然出现其中一些Mapper类找不到
  3. 英特尔发布全新英特尔&#174; INDE 2015工具套件
  4. Kali Linux 新手折腾笔记
  5. PHPExcel导出
  6. Ubuntu安装与初始配置
  7. SQL Server SQLOS
  8. 五个典型的JavaScript面试题
  9. nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。
  10. QT:窗口最小化时显示一个小浮标