日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

Android CheckedTextView 实现单选与多选

發(fā)布時(shí)間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android CheckedTextView 实现单选与多选 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以下demo 地址

單選與雙選實(shí)現(xiàn)的效果如下

CheckedTextView 繼承的是 TextView 實(shí)現(xiàn) Checkable 具有TextView 的屬性

一般使用結(jié)合ListView?

xml 屬性

android:checkMark : 可繪制用于復(fù)選標(biāo)記圖形

android:checked : 指示文本的初始檢查狀態(tài)

默認(rèn)提供單選框樣式:
android:checkMark="?android:attr/listChoiceIndicatorSingle"

默認(rèn)的效果圖如下


默認(rèn)提供復(fù)選框樣式:
android:checkMark="?android:attr/listChoiceIndicatorMultiple"

默認(rèn)的效果圖如下

下面結(jié)合代碼說下使用

MainActivity 的代碼如下

public class MainActivity extends AppCompatActivity {private String[] data = {"Android", "Java", "C++", "PHP", "Python", "JS", "HTML", "CSS"};private ListView listView;ArrayList<String> arrayList = new ArrayList<>();SingleCheckAdapter adapter;private ListView listView1;ArrayList<String> arrayList1 = new ArrayList<>();List<String> list = new ArrayList<>();MultCheckAdapter adapter1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 單選數(shù)據(jù)listView = findViewById(R.id.listView);arrayList.addAll(Arrays.asList(data));adapter = new SingleCheckAdapter(MainActivity.this, arrayList);listView.setAdapter(adapter);listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Log.v("----hxm", "您選擇的是:" + arrayList.get(position));}});//多選數(shù)據(jù)listView1 = findViewById(R.id.listView1);arrayList1.addAll(Arrays.asList(data));adapter1 = new MultCheckAdapter(MainActivity.this, arrayList1);listView1.setAdapter(adapter1);listView1.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {if (list.contains(arrayList1.get(position))) {list.remove(arrayList1.get(position));} else {list.add(arrayList.get(position));}Log.v("----hxm", "您選擇的是:" + list);}});}}
SingleCheckAdapter 的代碼如下:
package com.hly.timeactivity;import java.util.ArrayList;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckedTextView;public class SingleCheckAdapter extends BaseAdapter {private ArrayList<String> list;private Context mContext;private ArrayList<String> resultList = new ArrayList<>();public SingleCheckAdapter(Context context, ArrayList<String> list) {this.list = list;this.mContext = context;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {final ViewHolder holder;if (convertView == null) {holder = new ViewHolder();convertView = LayoutInflater.from(mContext).inflate(R.layout.single_list_item_layout, null);holder.checkedTextView = convertView.findViewById(R.id.checkedTextView);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.checkedTextView.setText(list.get(position));return convertView;}public static class ViewHolder {CheckedTextView checkedTextView;}}

xml :single_list_item_layout

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="60dp"android:id="@+id/checkedTextView"android:checkMark="@drawable/drawable_single_checked_view"android:text="CheckedTextView"android:textSize="25sp" />
drawable_single_checked_view 
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/single_select" android:state_checked="true" /><item android:drawable="@drawable/single_unselect" android:state_checked="false" />
</selector>

由于多選和單選差不多,這里就不貼代碼了, 代碼都很簡(jiǎn)單的,別的就不多說了, 不過還需要特別注意下,list 的item 最外層的布局要使用CheckedTextView, 這個(gè)監(jiān)聽的時(shí)候點(diǎn)擊item 就相當(dāng)于點(diǎn)擊了CheckedTextView,

如果最外層不是CheckedTextView 點(diǎn)擊事件會(huì)有問題.

總結(jié)

以上是生活随笔為你收集整理的Android CheckedTextView 实现单选与多选的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。