本文实例讲述了Android实现ListView控件的多选和全选功能。分享给大家供大家参考,具体如下:主程序代码MainActivity.Javapackage yy.test;import java.util.ArrayList;impo
本文实例讲述了Android实现ListView控件的多选和全选功能。分享给大家供大家参考,具体如下:
主程序代码
MainActivity.Java
package yy.test;import java.util.ArrayList;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.CheckBox;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity { private ListView listView; private MyAdapter adapter; private ArrayList<String> items; //模拟存储信息的集合 private ArrayList<String> checked; //该集合存储被选中的列表项中的TextView中所显示的字符串 private boolean isMultiple = false; // 记录是否是多选状态,true为是,false不是 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView = (ListView) findViewById(R.id.listview); items = new ArrayList<String>(); items.add("00000"); items.add("11111"); items.add("22222"); items.add("33333"); items.add("44444"); items.add("55555"); items.add("66666"); items.add("77777"); items.add("88888"); items.add("99999"); items.add("aaaaa"); items.add("bbbbb"); items.add("ccccc"); items.add("DDDdd"); adapter = new MyAdapter(items,this); //new出自定义的MyAdapter对象 listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) { if(isMultiple){ CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox); TextView textView = (TextView) view.findViewById(R.id.text); if(checkBox.isChecked()){ checkBox.setChecked(false); adapter.checkedMap.put(position, false); textView.setTextColor(Color.WHITE); adapter.colORMap.put(position, Color.WHITE); int index = checked.indexOf(textView.getText()+""); checked.remove(index); }else{ checkBox.setChecked(true); adapter.checkedMap.put(position, true); textView.setTextColor(Color.RED); adapter.colorMap.put(position, Color.RED); checked.add(textView.getText()+""); } } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu subMenu = menu.addSubMenu("操作"); subMenu.add(0, 1, 0, "多选"); subMenu.add(0, 2, 0, "删除"); subMenu.add(0, 3, 0, "全选"); subMenu.add(0, 4, 0, "取消全选"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==1){ isMultiple = true; checked = new ArrayList<String>(); int index = adapter.getCount(); for(int i=0;i<index;i++){ adapter.visibleMap.put(i, CheckBox.VISIBLE); } adapter.notifyDataSetChanged(); }else if(item.getItemId()==2){ for(String text : checked){ int index = items.indexOf(text); items.remove(index); } isMultiple = false; adapter = new MyAdapter(items,MainActivity.this); listView.setAdapter(adapter); }else if(item.getItemId()==3){ isMultiple = true; checked = new ArrayList<String>(); int index = adapter.getCount(); for(int i=0;i<index;i++){ adapter.checkedMap.put(i, true); adapter.colorMap.put(i, Color.RED); adapter.visibleMap.put(i, CheckBox.VISIBLE); View view1 = adapter.getView(i, null, null); TextView textView = (TextView) view1.findViewById(R.id.text); textView.setTextColor(Color.RED); adapter.notifyDataSetChanged(); checked.add(textView.getText()+""); } }else if(item.getItemId()==4){ isMultiple = false; checked = null; int index = adapter.getCount(); for(int i=0;i<index;i++){ adapter.checkedMap.put(i, false); adapter.colorMap.put(i, Color.WHITE); adapter.visibleMap.put(i, CheckBox.INVISIBLE); adapter.notifyDataSetChanged(); } } return super.onOptionsItemSelected(item); }}
--结束END--
本文标题: Android实现ListView控件的多选和全选功能实例
本文链接: https://www.lsjlt.com/news/222370.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0