Android裡ListView裡面新增CheckBox實現多選。
1. 我在網上找了很多關於這個方面的文章,因為現在Android裡的ListView基本上都用到了ViewHolder,用到了convertView。
2. 網上有的文章也有用到convertView的,只是資料多了CheckBox的選擇基本上是出錯的了。
3.我想過用Adapter裡面用Map<>來儲存CheckBox是否選擇。可是太麻煩了。我
4. 現在我用我的方法來做一個這樣的。資料和介面分離開,這才是最好的。
listView的item的xml檔案, item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/item_icon" android:layout_width="50dp" android:layout_height="50dp" android:background="#000" /> <LinearLayoutandroid:layout_width="0dp" android:layout_height="50dp" android:layout_marginLeft="10dp" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/item_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true"android:textSize="20dp" /> <TextView android:id="@+id/item_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true"android:textSize="16dp" /> </LinearLayout> <CheckBox android:id="@+id/item_cb" android:layout_width="wrap_content" android:layout_height="50dp" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false" /> </LinearLayout>
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </ListView> </LinearLayout>
資料來源格式實現:Bean.java
public class Bean { private Drawable drawable; private String title; private String info; private boolean isChcked;//多了這個屬性來儲存CheckBox的選擇狀態public Bean(Drawable drawable, String title, String info, boolean isChcked) { this.drawable = drawable; this.title = title; this.info = info; this.isChcked = isChcked; } public void setIsChcked(boolean isChcked) { this.isChcked = isChcked; } public boolean getIsChcked() { return isChcked; } public String getInfo() { return info; } public String getTitle() { return title; } public Drawable getDrawable() { return drawable; } }
MainActivity.java
public class MainActivity extends AppCompatActivity { private ListView lv; private BeanAdapter mAdapter; private List<Bean> mList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); lv = (ListView)findViewById(R.id.lv); mAdapter = new BeanAdapter(mList, this); lv.setAdapter(mAdapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ViewHolder viewHolder = (ViewHolder)view.getTag(); if(viewHolder.cb.isChecked()) //true -> false { viewHolder.cb.setChecked(false); mList.get(position).setIsChcked(false);//改變狀態並儲存下來 } else { viewHolder.cb.setChecked(true); mList.get(position).setIsChcked(true); } } }); } private void initData() { mList = new ArrayList<Bean>(); Bean bean; for(int i = 0; i < 70; i++) { bean = new Bean(getDrawable(R.drawable.float1), "title" + i, "info" + i, false); mList.add(bean); } } }原始碼地址:http://download.csdn.net/detail/u013792369/9091055
相關推薦
Android裡ListView裡面新增CheckBox實現多選。
1. 我在網上找了很多關於這個方面的文章,因為現在Android裡的ListView基本上都用到了ViewHolder,用到了convertView。 2. 網上有的文章也有用到convertView的,只是資料多了CheckBox的選擇基本上是出錯的了。 3.我想過用Ad
基於ListView和CheckBox實現多選和全選記錄的功能
應用開發中經常會有從資料庫中讀取資料顯示,然後選中多條、全部記錄並且刪除的需求。在做定製系統聯絡人的時候也遇到這樣的需求,下面寫個簡單的通過ListView和CheckBox實現多選、全
ListView中新增CheckBox,進行多項選擇,全選,反選,完美無Bug
新手筆記: 最近做一個列表,實現批量選擇刪除功能,用到了ListView中新增的CheckBox,來進行多項選擇,全選,反選等。因為用到了ListView,故對新手來說,有很多坑。 1、由於ListView採用了Recycler,即重複利用convertView,所以用Ch
CSS+checkbox 實現多選按鈕 多選標籤
效果圖: CSS: input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0,
Android Demo之旅 ListView底部新增載入更多按鈕實現資料分頁
在我們的實際專案中,資料應該說是很多的,我們的ListView不可能一下子把資料全部載入進來,我們可以當滾動條滾動到ListView的底部的時候,給一個更多的提示,當我們點選它即載入下一頁的資料,相當與我們的分頁效果,參考網上的東西,寫了一個小小的demo,並總結了一些知識
android UI進階之實現listview中checkbox的多選與記錄
今天繼續和大家分享涉及到listview的內容。在很多時候,我們會用到listview和checkbox配合來提供給使用者一些選擇操作。比如在一個清單頁面,我們需要記錄使用者勾選了哪些條目。這個的實現並不太難,但是有很多朋友來問我如何實現,他們有遇到各種各樣的問
如何在Android的ListView中構建CheckBox和RadioButton列表(支援單選和多選的投票專案示例)
引言 我們在android的APP開發中有時候會碰到提供一個選項列表供使用者選擇的需求,如在投票型別的專案中,我們提供一些主題給使用者選擇,每個主題有若干選項,使用者對這些主題的選項進行選擇,然後提交。 本文以一個支援單選和多選投票專案為例,演示了在一個ListView中如何構建CheckBox列表和Ra
Android裡Listview簡單的應用
建立一個xml檢視程式碼 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.andr
ListView 實現多選/單選
ListView自身帶了單選、多選模式,可通過listview.setChoiceMode來設定: listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//開啟多選模式 listview.setChoiceMode(ListView.CHO
DataTable新增checkbox實現表格資料全選,單選(點選)
Datatables是一款jquery表格外掛。它是一個高度靈活的工具,可以將任何HTML表格新增高階的互動功能。 分頁,即時搜尋和排序 幾乎支援任何資料來源:DOM, javascript, Ajax 和 伺服器處理 支援不同主題 DataTables, j
Android跑馬燈特效之動態實現多個文字同時一起滾動
最近做直播專案,有個跑馬燈效果,剛開始用原生的TextView實現,給產品一看,果斷被否定了,於是自定義了一個MarqueeTextView可以自動獲得焦點,加入足夠多的文字的自己就跑動起來了,於是又拿給產品,說是有五個廣告文
android 在.xml裡面新增點選事件onclick屬性,報錯java.lang.IllegalStateException: Could not find method
每天隨時都在寫onclick方法,自己寫的發現一個問題,在xml中定義 看報錯資訊: java.lang.IllegalStateException: Could not find method onClickButton(View) in a parent or ancestor
安卓實現listview聯動效果且選項多選
實現效果如圖,點選大洲進行第一個listview資料的重新整理且聯動第二個listview資料更新,正常第二個listview是單選,點選後進行資料重新整理,現在做的是資料多選最後點選確定按鈕進行資料提交 首先實現兩個listview聯動效果: 資料來源如下 "
Android裡ListView分頁載入資料
當列表資料量大的時候我們一半都進行分頁,android裡分頁一半不同於PC端,第幾頁的方式,一般都是滑動到底部資料自帶載入,廢話不多數了直接看程式碼: ListActivity.java類: import java.util.ArrayList; import an
Android開發——ListView區域性重新整理的實現
0. 前言區域性重新整理,即只需要在資料發生變化時才去重新整理ListView中對應的Item,資料未發生變化時不會去重新整理ListView中對應的Item。對於getView()非常耗時的情況下將體
玩轉Android---UI篇---CheckBox(多選按鈕)
原址:http://hualang.iteye.com/category/143855 多選按鈕CheckBox的可以實現多項選擇,我們可以現在佈局檔案中定義多選按鈕,然後對每一個多選按鈕進行事件監聽 setOnCheckedChangeListener,通過isC
RecyclerView巢狀CheckBox實現單選全選反選操作每條Item新增分割線
activity_main.xml的佈局:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
Android在設定裡面新增新功能的方法
1./usr/smdt/self6000/android/packages/apps/Settings/res/xml/device_info_settings.xml 中增加節點: <!-- Detailed build version-->
Android中ListView動態新增、移除itemView
ListView是Android專案中經常用到的一個控制元件,Listview用於顯示資料,同時我們經常會遇到要給ListView新增或是移除itemView,所以,寫了一個小小的demo解決這個小問題。 activity_main.xml程式碼: <LinearLa
android動態設定配置項並隨機排布並實現多選
效果如下: 首先佈局是這樣的,只有一個自定義的控制元件的FlowLayout <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h