Android中ListView结合CheckBox判断选中项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android中ListView结合CheckBox判断选中项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6118字,纯文字阅读大概需要9分钟。
内容图文
![Android中ListView结合CheckBox判断选中项](/upload/InfoBanner/zyjiaocheng/1324/1c28e14db66a4c44b9ebe1ec804e4475.jpg)
本文主要实现在自定义的ListView布局中加入CheckBox控件,通过判断用户是否选中CheckBox来对ListView的选中项进行相应的操作。通过一个Demo来展示该功能,选中ListView中的某一项,然后点击Button按钮来显示选中了哪些项。
[1] 程序结构图如下:
其中Person.java是实体类,MainActivity.java是Activity组件类。listitem.xml是自定义的列表每项布局文件。
[2] listitem.xml布局文件源码如下:
<? xml version="1.0" encoding="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:orientation ="vertical" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < LinearLayout android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:orientation ="horizontal" android:descendantFocusability ="blocksDescendants" > < CheckBox android:id ="@+id/list.select" android:layout_width ="wrap_content" android:layout_height ="wrap_content" /> < TextView android:id ="@+id/list.name" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:layout_weight ="1" android:text ="Name" android:layout_gravity ="center" android:textSize ="20dp" android:layout_marginLeft ="10dp" /> < TextView android:id ="@+id/list.address" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:layout_weight ="1" android:text ="Address" android:layout_gravity ="center" android:textSize ="20dp" /> </ LinearLayout > </ LinearLayout >
[3] main.xml布局文件源码如下:
<? xml version="1.0" encoding="utf-8" ?> < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:orientation ="vertical" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < Button android:id ="@+id/show" android:layout_width ="fill_parent" android:layout_height ="wrap_content" android:text ="Show" /> < ListView android:id ="@+id/lvperson" android:layout_width ="fill_parent" android:layout_height ="fill_parent" /> </ LinearLayout >
[4] Person.java实体类源码如下:
package com.andyidea.bean; public class Person { private String name; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } publicvoid setAddress(String address) { this.address = address; } }
[5] MainActivity.java类源码如下:
package com.andyidea.listview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import com.andyidea.bean.Person; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends Activity { Button show; ListView lv; List<Person> persons = new ArrayList<Person>(); Context mContext; MyListAdapter adapter; List<Integer> listItemID = new ArrayList<Integer>(); /** Called when the activity is first created. */ @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mContext = getApplicationContext(); show = (Button)findViewById(R.id.show); lv = (ListView)findViewById(R.id.lvperson); initPersonData(); adapter = new MyListAdapter(persons); lv.setAdapter(adapter); show.setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { listItemID.clear(); for(int i=0;i<adapter.mChecked.size();i++){ if(adapter.mChecked.get(i)){ listItemID.add(i); } } if(listItemID.size()==0){ AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); builder1.setMessage("没有选中任何记录"); builder1.show(); }else{ StringBuilder sb = new StringBuilder(); for(int i=0;i<listItemID.size();i++){ sb.append("ItemID="+listItemID.get(i)+" . "); } AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this); builder2.setMessage(sb.toString()); builder2.show(); } } }); } /** * 模拟数据 */privatevoid initPersonData(){ Person mPerson; for(int i=1;i<=12;i++){ mPerson = new Person(); mPerson.setName("Andy"+i); mPerson.setAddress("GuangZhou"+i); persons.add(mPerson); } } //自定义ListView适配器class MyListAdapter extends BaseAdapter{ List<Boolean> mChecked; List<Person> listPerson; HashMap<Integer,View> map = new HashMap<Integer,View>(); public MyListAdapter(List<Person> list){ listPerson = new ArrayList<Person>(); listPerson = list; mChecked = new ArrayList<Boolean>(); for(int i=0;i<list.size();i++){ mChecked.add(false); } } @Override publicint getCount() { return listPerson.size(); } @Override public Object getItem(int position) { return listPerson.get(position); } @Override publiclong getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder = null; if (map.get(position) == null) { Log.e("MainActivity","position1 = "+position); LayoutInflater mInflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = mInflater.inflate(R.layout.listitem, null); holder = new ViewHolder(); holder.selected = (CheckBox)view.findViewById(R.id.list_select); holder.name = (TextView)view.findViewById(R.id.list_name); holder.address = (TextView)view.findViewById(R.id.list_address); finalint p = position; map.put(position, view); holder.selected.setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { CheckBox cb = (CheckBox)v; mChecked.set(p, cb.isChecked()); } }); view.setTag(holder); }else{ Log.e("MainActivity","position2 = "+position); view = map.get(position); holder = (ViewHolder)view.getTag(); } holder.selected.setChecked(mChecked.get(position)); holder.name.setText(listPerson.get(position).getName()); holder.address.setText(listPerson.get(position).getAddress()); return view; } } staticclass ViewHolder{ CheckBox selected; TextView name; TextView address; } }
[6] 程序运行后的结果如下:
原文:http://www.cnblogs.com/dennytao/p/5351846.html
内容总结
以上是互联网集市为您收集整理的Android中ListView结合CheckBox判断选中项全部内容,希望文章能够帮你解决Android中ListView结合CheckBox判断选中项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。