在ListView中嵌套Switch开关,点击ListView条目来切换Switch的状态
2016-11-28 15:20
871 查看
在ListView中添加Switch,让用户去点那个小小的开关的话体验不太好,通过点
击ListView的条目来改变Switch的开关状态.
目标效果
点击测试即可切换第一行的Swith的开关状态
需要注意的是正常添加的话Switch会屏蔽掉ListView的onItemClick事件,需要在Switch的布局文件中添加
android:focusable=”false”
否则将无法点击ListView的条目
MainActivity
ListView适配器
MainAvtivity的布局文件只有一个ListView
需要注意的是ListView条目的布局文件
在条目布局文件中将Switch的clickable也关闭是为了方便操作,处理开关事件只需要在ListView的itemClickListener中进行,无需再在Switch的onClickListener中再进行一次.
源码下载地址
CSDN资源到上限了QAQ,百度云失效的话提醒我一下
百度云:https://pan.baidu.com/s/1kUCfhoN
最后,我只是安卓的新手,如有错误或更好的方法,欢迎大家在评论区进行讨论.
击ListView的条目来改变Switch的开关状态.
目标效果
点击测试即可切换第一行的Swith的开关状态
需要注意的是正常添加的话Switch会屏蔽掉ListView的onItemClick事件,需要在Switch的布局文件中添加
android:focusable=”false”
否则将无法点击ListView的条目
MainActivity
public class MainActivity extends AppCompatActivity { private ListView lv; private Adapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv=(ListView)findViewById(R.id.lv); adapter=new Adapter(MainActivity.this); adapter.addItem("测试"); adapter.addItem("测试1"); adapter.addItem("测试2"); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Switch aSwitch=adapter.getaSwitch(i); if(aSwitch.isChecked()){ aSwitch.setChecked(false); //进行业务处理 }else { aSwitch.setChecked(true); //进行业务处理 } } }); } }
ListView适配器
public class Adapter extends BaseAdapter { private List<String> list_title; private List<Switch> list_switch; private Context mContext; private TextView tv; private Switch aSwitch; public Adapter(Context context) { mContext=context; list_title=new ArrayList<>(); list_switch=new ArrayList<>(); } public void addItem(String title){ list_title.add(title); } public Switch getaSwitch(int position){ return list_switch.get(position); } @Override public int getCount() { return list_title.size(); } @Override public Object getItem(int i) { return list_title.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { view= LayoutInflater.from(mContext).inflate(R.layout.item,null); tv=(TextView)view.findViewById(R.id.tv); aSwitch=(Switch)view.findViewById(R.id.aSwitch); list_switch.add(aSwitch); tv.setText(list_title.get(i)); return view; } }
MainAvtivity的布局文件只有一个ListView
需要注意的是ListView条目的布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv" android:padding="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Switch android:id="@+id/aSwitch" android:focusable="false" android:clickable="false" android:padding="10dp" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
在条目布局文件中将Switch的clickable也关闭是为了方便操作,处理开关事件只需要在ListView的itemClickListener中进行,无需再在Switch的onClickListener中再进行一次.
源码下载地址
CSDN资源到上限了QAQ,百度云失效的话提醒我一下
百度云:https://pan.baidu.com/s/1kUCfhoN
最后,我只是安卓的新手,如有错误或更好的方法,欢迎大家在评论区进行讨论.
相关文章推荐
- listview设置条目点击的时候不变色(让状态选择器不起作用)
- listview乱跳问题-listview乱跳问题:最后状态正确,就是执行动画过程有问题,点击某一个条目中的展开全文按钮,其它的条目也都会走一下动画展开一下,随后又恢复。但最后好、状态都是正确的。
- 实现ExpandableListView 二级列表,点击二级条目状态的改变
- LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)
- ListView嵌套GridView的一些处理(点击GridView的条目,能够显示他在ListView中的位置)
- Android ListView条目按钮点击状态混乱解决方案
- ListView嵌套gridview不能完全展示,listview子条目点击改变背景
- listview设置条目点击的时候不变色(让状态选择器不起作用)
- Scrollview嵌套listview后切换fragment定位不准的情况
- ListView条目点击时和点击后图片颜色、文字颜色、条目背景更改大全
- SlidingMenu条目点击无响应、Android输入框过多视图改变和ViewPager页面点击切换自然
- 一起学android之解决在scrollview中嵌套ListView切换界面时scrollview整体向下滑动(31)
- Android-ListView中嵌套(ListView)控件时item的点击事件不起作用的问题
- listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠
- 状态开关按钮(ToggleButton)与开关(Switch)的功能与用法
- 关于ListView 条目点击混乱的问题
- MulValueItem 点击状态切换机制
- Android:处理ListView条目中的Button的点击事件和条目点击事件冲突
- 解决ListView中嵌套GridView,点击gridview部分无法触发listview 的onItemClick
- bootstrap switch 按钮开关初始化加载赋值,ajax点击切换