listView 单选实现
2024-10-19 01:31:19
上一篇知道可以使用android自带的listview的chiocemode的单选模式实现。但那个布局是系统自带的checkedTextView,有时候我们需要自己实现布局,那么下面我们开始实现
自定义组合布局,实现checkable接口。
- public class SingleView extends LinearLayout implements Checkable {
- private TextView mText;
- private CheckBox mCheckBox;
- public SingleView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- initView(context);
- }
- public SingleView(Context context, AttributeSet attrs) {
- super(context, attrs);
- initView(context);
- }
- public SingleView (Context context) {
- super(context);
- initView(context);
- }
- private void initView(Context context){
- // 填充布局
- LayoutInflater inflater = LayoutInflater.from(context);
- View v = inflater.inflate(R.layout.item_single_layout , this, true);
- mText = (TextView) v.findViewById(R.id. title);
- mCheckBox = (CheckBox) v.findViewById(R.id. checkbox);
- }
- @Override
- public void setChecked( boolean checked) {
- mCheckBox.setChecked(checked);
- }
- @Override
- public boolean isChecked() {
- return mCheckBox.isChecked();
- }
- @Override
- public void toggle() {
- mCheckBox.toggle();
- }
- public void setTitle(String text){
- mText.setText(text);
- }
- }
activity中试下代码:
- public class MainActivity extends Activity {
- private ArrayList<String> groups;
- private ListView listView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout. activity_main);
- listView = (ListView) findViewById(R.id. listView);
- groups = new ArrayList<String>();
- groups.add( "11");
- groups.add( "22");
- groups.add( "33");
- groups.add( "44");
- groups.add( "55");
- groups.add( "66");
- groups.add( "77");
- groups.add( "88");
- groups.add( "99");
- groups.add( "00");
- SingleAdapter singleAdapter = new SingleAdapter();
- listView.setAdapter(singleAdapter);
- Button button = (Button) findViewById(R.id. button);
- button.setOnClickListener( new OnClickListener() {
- @Override
- public void onClick(View v) {
- PickNum();
- }
- });
- }
- private void PickNum() {
- int position = listView.getCheckedItemPosition();
- if (ListView. INVALID_POSITION != position) {
- Toast. makeText(MainActivity.this, groups.get(position), 0).show();
- }
- }
- private class SingleAdapter extends BaseAdapter {
- @Override
- public int getCount() {
- return groups.size();
- }
- @Override
- public Object getItem( int position) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public long getItemId( int position) {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public View getView( final int position, View convertView,
- ViewGroup parent) {
- final SingleView singleView = new SingleView(MainActivity.this );
- singleView.setTitle( groups.get(position));
- return singleView;
- }
- }
- }
效果:
如果要替换默认checkbox的图标显示,设置checkbox的button属性即可。
附件:
http://download.csdn.net/detail/knxw0001/7961143
最新文章
- 多节点 devstack 部署
- ThinkPHP3.2.3--相对路径的写法
- NEC学习 ---- 模块 -水平文字链接列表
- c#开发Mongo笔记第八篇
- Java NIO 概述
- java线程之停止线程
- Objective-C类的使用
- opengl 扳回一球
- 【转载】深入Java单例模式
- js的addEvertLIstener方法
- vijos1101题解
- Python爬虫入门教程 60-100 python识别验证码,阿里、腾讯、百度、聚合数据等大公司都这么干
- ORM表相关操作
- 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法
- OneStopEnglish corpus: A new corpus for automatic readability assessment and text simplification-paper
- git patch 使用
- unity3d的优化场景技术LOD+IOC
- 001-Two Sum
- 第一章:什么是Linux
- shell之arp命令