超简单的listview单选模式SingleMode(自定义listview item)

来源:https://stackoverflow.com/questions/8337180/custom-single-choice-listview/12823457#12823457

1.在listview item里面设置

<span style="font-size:18px;"><RadioButton
     android:id="@+id/radio1"
     android:checked="false"
     android:focusable="false"
     android:clickable="false"
 /></span>

把checked focusable clickable设置为false

2.设置ListView

<ListView
    android:id="@android:id/list"
    android:choiceMode="singleChoice"
    android:descendantFocusability="beforeDescendants"
/>

3.在自定义adapter里面设置

int selectedIndex = -1;

public void setSelectedIndex(int index){
    selectedIndex = index;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    RadioButton rbSelect = (RadioButton) convertView
                        .findViewById(R.id.radio1);
    if(selectedIndex == position){
    rbSelect.setChecked(true);
    }
    else{
    rbSelect.setChecked(false);
    }
}

4.在activity设置list的onItemClickListener

 mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                mChangeAdapter.setSelectedIndex(position);
                mChangeAdapter.notifyDataSetChanged();
            }
        });

5.可选,存储单选状态在数据库,第二次打开依然把选中的item给设置为选中状态

 ChangeBean bean = mData.get(position);
        mHolder.tv_name.setText(bean.name);

        if (selectedIndex == position) {
            mHolder.iv_choice.setChecked(true);
            bean.setCheck(true);
            updateData(bean);
        } else {
            mHolder.iv_choice.setChecked(false);
            bean.setCheck(false);
            updateData(bean);
        }

然后在activity中在setAdapter之前把选中的item设置为选中状态

   mChangeAdapter = new ChangeAdapter(this);
        mList.setAdapter(mChangeAdapter);
        initSelect();
        mChangeAdapter.refresh(mDatas);
        addListener();
    }

    private void initSelect() {
        for (int i = 0; i < mDatas.size(); i++)
        {
            if (mDatas.get(i).check){
                mChangeAdapter.setSelectedIndex(i);
                return;
            }
        }
    }

时间: 2024-10-13 00:55:31

超简单的listview单选模式SingleMode(自定义listview item)的相关文章

ListView多选和单选模式重新整理

超简单的单选和多选ListView 在开发过程中,我们经常会使用ListView去呈现列表数据,比如商品列表,通话记录,联系人列表等等,在一些情况下,我们还需要去选择其中的一些列表数据进行编辑.以前,我在项目开发中,都是在自定义的Adapter中去维护一个SparseBooleanArray变量来保存当前ListView中已经被选中的项,然后在自定义Adapter的getView()和ListView的setOnItemClickListener()方法中去实时更新SparseBooleanAr

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

原文网址:http://blog.csdn.net/checkin001/article/details/11519131 Android自带的RadioButton单选框只支持添加文字,我们自己写Adapter实现自定义的RadioButton 首先item的XML源码 search_user_item.xml (现在只是文字+单选按钮+自定义背景,可以根据需要随意扩展) [html] view plaincopy <?xml version="1.0" encoding=&q

ListView 的单选模式

<RadioButton与ListView的混合使用>一文中,我在适配器中用标记的方法实现了用户选择的操作,这次用ListView的单选模式来实现一下.ListView的默认状态下是没有选择行为的,把ListView的choiceMode设置为singleChoice,列表就可以实现单选(当然它也有多选模式,这个后面再研究). Activity的布局文件如下,ListView选择了单选模式,这次我把ListView上方的TextView换成了Button: <LinearLayout x

【Android自定义View实战】之超简单SearchView

[Android自定义View实战]之超简单SearchView 在Android开发中我们经常会用到搜索框,而系统提供的又不尽完美.所以自定义一个比较简单的SearchView. 效果图 实现代码 package cn.bluemobi.dylan.searchview; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.ut

pdf怎么转换成excel格式 超简单

可编辑文档转换为不可编辑文档是非常简单的,比如将word或者excel转换成jpg或者pdf,office或者wps软件本身的最新版就自带有这个功能.但是如果我们要将PDF这种不可修改编辑的文档转换成可编辑的形式就会稍微麻烦一点,因为这种格式是任你怎么放大缩小都不会改变文件的排版方式,虽然阅读起来很方便.那怎么办呢?下面小编教给大家一个方法,可以将PDF转换成Excel格式,超简单! 把PDF格式的文件精确转换成EXCEL表格,这边我们可以选择一款叫"迅捷PDF转换器"的软件. (pd

ListView单选的实现总结(转)

今天在智能停车场项目中需要实现PullToRefreshListView的单选功能,考虑到分页,刷新等,以前的实现方式是采用自己维护一个集合保存选中位置的选中状态,但这个方式比较繁琐,今天采用了listview的单选模式 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);来实现: ListView是通过实现Checkable接口来处理单选模式的,这要求Item的视图实现Checkable接口,创建ChoiceListItemView类来实现该

ListView单选的实现总结

今天在智能停车场项目中需要实现PullToRefreshListView的单选功能,考虑到分页,刷新等,以前的实现方式是采用自己维护一个集合保存选中位置的选中状态,但这个方式比较繁琐,今天采用了listview的单选模式 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);来实现: ListView是通过实现Checkable接口来处理单选模式的,这要求Item的视图实现Checkable接口,创建ChoiceListItemView类来实现该

Android UI设计之&lt;十&gt;自定义ListView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果

转载请注明出处:http://blog.csdn.net/llew2011/article/details/51559694 好久没有写有关UI的博客了,刚刚翻了一下之前的博客,最近一篇有关UI的博客是在2014年写的:Android UI设计之<七>自定义Dialog,实现各种风格效果的对话框,在那篇博客写完后由于公司封闭开发封网以及其它原因致使博客中断至今,中断这么久很是惭愧,后续我会尽量把该写的都补充出来.近来项目有个需求,要做个和QQ空间类似的菜单栏透明度渐变和下拉刷新带有阻尼回弹的效

【Android UI】ListView系列二(自定义Adapter订阅新闻栏目)

目标:自定义适配器Adapter实现点击每个item订阅按钮 上一篇介绍了listview的基本属性以及ArrayAdapter和SimpleAdapter的简单实用,链接:listview使用方式基础篇. 今天主要介绍一下自定义adapter,来实现稍微复杂点的功能,今天实现的效果是:类似于listiew展示许多可供订阅的栏目,每个栏目最右端有订阅按钮,用户点击订阅可以订阅该栏目,再次点击可取消订阅,效果图如下,下面我们一步步来实现. 1. 定义主布局文件activity_main.xml 主