標籤:android listview 全選 checkbox listview全選 listview
大家好,翻了翻以前的筆記,發現了一個我特別標記的功能,那就是ListView全選功能,頓時想起了我那個時候苦逼的生涯,由於我大學機械出身,大學畢業了都不知道什麼叫代碼,在58幹了一段銷售。實在是幹不下去了,不幹了就得在網上找工作,就喜歡乾電腦相關的工作,有一天,一家培訓機構給我打來電話讓我去面試,我以為讓我去工作那,誰知道是忽悠我去培訓,我當然不可能花錢了,就直接回去了,想了幾天,除了銷售我真不知道幹啥,咬咬牙,就花錢培訓了。我擦,咋說這到了,不跟你們說了,還是寫下面的這個功能吧,雖然很簡單,但是對於我當時來說是很難的了,所以我寫出來給安卓一些新手看看,雖然我現在也很菜,但是我會努力的。
其實也很簡單的,就是在適配器裡面建一個集合,主要盛裝選中的條目,在寫一些添加,清除的方法。在list_item裡面放一張對號圖片,第一次點擊的時候顯示,再點擊在隱藏.....迴圈起來,先讓看看:如所示:
首先讓我看看主Activity裡面的代碼,如下所示:
package com.zqy.listviewdelete;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener{private List<String> strings = new ArrayList<String>();private ListView mListView;private ListAdapter adapter;private Button btnCheckall, btnCancel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mListView = (ListView) findViewById(R.id.listView1);adapter = new ListAdapter(this);initVar();initView();adapter.setdata(strings);mListView.setAdapter(adapter);mListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {/** * 加入點擊後選中的集合裡面有就移除它,沒有就添加進去 */if (adapter.isItemSelected(position)) {adapter.removeSelected(position);} else {adapter.addSelected(position);}adapter.notifyDataSetChanged();}});}/** * 初始化控制項 */private void initView() {btnCheckall=(Button) findViewById(R.id.btn_checkall);btnCancel=(Button) findViewById(R.id.btn_cancel);btnCheckall.setOnClickListener(this);btnCancel.setOnClickListener(this);}/** * 添加類比資料 */private void initVar() {for (int i = 0; i < 20; i++) {strings.add(i + "");}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_checkall:/** * 首先先移除在全選之前選中的條目 */adapter.removeselected();/* * 遍曆集合 ,添加到選中集合進去 */for (int i = 0; i < strings.size(); i++) {adapter.addSelected(i);adapter.notifyDataSetChanged();}break;case R.id.btn_cancel:/** * 清空選中集合 */adapter.removeselected();adapter.notifyDataSetChanged();break;default:break;}}}非常簡單,初始化控制項,添加虛擬資料,加入選中集合,全選遍曆,刪除清空集合
在讓我們看看適配器裡面的代碼:如下所示:
package com.zqy.listviewdelete;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class ListAdapter extends BaseAdapter {private Context mContext;private List<String> list;/** * 定義一個選中的集合 */private List<Integer> seleteds;public ListAdapter(Context context) {super();this.mContext = context;list = new ArrayList<String>();seleteds = new ArrayList<Integer>();}public void setdata(List<String> strings ){list.addAll(strings);}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}/** * 添加到選中集合 * @param position */public void addSelected(int position) {seleteds.add(position);}public void removeSelected(Integer position) {if (seleteds.contains(position)) {seleteds.remove(position);}}/** * 清空選中集合 */public void removeselected(){seleteds.clear();}/* * 判讀是否飽含當前的條目 */public boolean isItemSelected(int position) {return seleteds.contains(position) ? true : false;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder=null;if(convertView==null){convertView=LayoutInflater.from(mContext).inflate(R.layout.list_item, null);holder=new ViewHolder();holder.textView=(TextView) convertView.findViewById(R.id.textView1);holder.imageView=(ImageView) convertView.findViewById(R.id.imageView1);convertView.setTag(holder);}else {holder=(ViewHolder) convertView.getTag();}/** * 由於convertView重用,所以在這需要把選中的圖片在初始化一樣。避免錯亂 */holder.imageView.setVisibility(View.INVISIBLE);/* * 判讀選中集合飽含條目就把選中的圖片顯示出來 */if (seleteds.contains(position)) {holder.imageView.setVisibility(View.VISIBLE);}holder.textView.setText(list.get(position));return convertView;}private static class ViewHolder {TextView textView;ImageView imageView;}}就是幾個方法,添加方法,清除方法等
好了,今天到此為止了,有什麼問題留言,翻起了日記,才想寫的這個,為了一些剛入門的新手,大神勿噴!
源碼下載,請點擊這裡