100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 在ListView中嵌套Switch开关 点击ListView条目来切换Switch的状态

在ListView中嵌套Switch开关 点击ListView条目来切换Switch的状态

时间:2020-08-22 02:40:30

相关推荐

在ListView中嵌套Switch开关 点击ListView条目来切换Switch的状态

在ListView中添加Switch,让用户去点那个小小的开关的话体验不太好,通过点

击ListView的条目来改变Switch的开关状态.

目标效果

点击测试即可切换第一行的Swith的开关状态

需要注意的是正常添加的话Switch会屏蔽掉ListView的onItemClick事件,需要在Switch的布局文件中添加

android:focusable=“false”

否则将无法点击ListView的条目

MainActivity

public class MainActivity extends AppCompatActivity {private ListView lv;private Adapter adapter;@Overrideprotected 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() {@Overridepublic 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);}@Overridepublic int getCount() {return list_title.size();}@Overridepublic Object getItem(int i) {return list_title.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic 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="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv"android:padding="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Switchandroid: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中再进行一次.

源码下载地址

/download/woqq863787405/13637053

蓝奏:/iXFEOj9eh2b

最后,我只是安卓的新手,如有错误或更好的方法,欢迎大家在评论区进行讨论.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。