android listView实现单选
16lz
2021-01-24
1,先上布局文件,利用了以前的布局,不要在意变量名称的细节
layout_wifi_item.xml
<?xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> android:id="@+id/tv_wifiName" android:layout_width="match_parent" android:layout_height="100dp" android:background="@drawable/item_click" android:button="@null" android:gravity="center" android:text="123" android:textColor="@android:color/black" />
2 drawable文件
item_click.xml
<?xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"> - android:drawable="@color/colorAccent" android:state_selected="true" />
- android:drawable="@color/colorAccent" android:state_checked="true" />
- android:drawable="@color/white" />
3.adapter
AbstractAdapter 这是adapter的父类,里面主要重写了BaseAdapter,不用在意
package com.my.test.mytestdemo.adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import com.my.test.mytestdemo.R;import java.util.List;import java.util.Map;/** * Created by yyf on 2016/11/23. * * @Description: */public class ItemClickAdapter extends AbstractAdapter { private Map, Boolean> map; public ItemClickAdapter(Context context, List listData, Map , Boolean> map) { super(context, listData); this.map = map; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { convertView = inflate(R.layout.layout_wifi_item); holder = new ViewHolder(); holder.tv_wifiName = (CheckBox) convertView.findViewById(R.id.tv_wifiName); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (map.get(position)){ holder.tv_wifiName.setChecked(true); }else { holder.tv_wifiName.setChecked(false); } holder.tv_wifiName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (holder.tv_wifiName.isChecked()) { for (Integer keys : map.keySet()) { if (map.get(keys)) { map.put(keys, false); } } map.put(position, true); } else { map.put(position, false); } notifyDataSetChanged(); } }); return convertView; } private class ViewHolder { private CheckBox tv_wifiName; }}
4.activity
package com.my.test.mytestdemo.listview.listview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import com.my.test.mytestdemo.R;import com.my.test.mytestdemo.adapter.ItemClickAdapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class ItemClickActivity extends AppCompatActivity { private ListView lv_list; private ItemClickAdapter adapter; private Listlist = new ArrayList (); private Map ,Boolean> map=new HashMap , Boolean>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_item_click); initView(); } private void initView() { for (int i = 0; i < 5; i++) { list.add(i + ""); map.put(i,false); } lv_list = (ListView) findViewById(R.id.lv_list); adapter = new ItemClickAdapter(this, list,map); lv_list.setAdapter(adapter); lv_list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); }}
6,代码挺简单,就不做说明
更多相关文章
- 【学习Android遇到的错误】Unable to resolve target 'android-9
- Android中如何使用自定义对话框
- Android(安卓)常用命令
- Android(安卓)DownloadManager 使用
- Android介绍如何生成keystore 文件并使用
- Android实现签名涂鸦手写板
- layout_weight 权重
- Android(安卓)Device Monitor 报 open failed: Permission denie
- Arcgis for Android(安卓)开发环境配置(Android(安卓)Studio篇)