ListView的Item含有CheckBox时的处理
发布日期:2021-06-30 11:23:18
浏览次数:2
分类:技术文章
本文共 3772 字,大约阅读时间需要 12 分钟。
main.xml如下:
listviewitem.xml如下:
ListViewAdapter如下:
import java.util.List;import java.util.Map;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import android.widget.SimpleAdapter;import android.widget.TextView;public class ListViewAdapter extends SimpleAdapter { private List > mArrayList; private int resource; private LayoutInflater mLayoutInflater; public ListViewAdapter(Context context,List > data, int resource, String[] from,int[] to) { super(context, data, resource, from, to); this.mArrayList=data; this.resource=resource; mLayoutInflater=(LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { if (mArrayList==null) { return 0; } else { return mArrayList.size(); } } @Override public Object getItem(int position) { if (mArrayList==null) { return null; } else { return mArrayList.get(position); } } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder=null; if(convertView==null){ viewHolder=new ViewHolder(); convertView=mLayoutInflater.inflate(resource, null); viewHolder.textView=(TextView) convertView.findViewById(R.id.textView); viewHolder.checkBox=(CheckBox) convertView.findViewById(R.id.checkbox);; convertView.setTag(viewHolder); }else { viewHolder=(ViewHolder) convertView.getTag(); } if (mArrayList!=null) { if (viewHolder.textView!=null) { viewHolder.textView.setText((String)(mArrayList.get(position).get("content"))); } if (viewHolder.checkBox!=null) { boolean isChecked=MainActivity.mCheckBoxStatusHashMap.get(position); viewHolder.checkBox.setChecked(isChecked); } } return convertView; } private class ViewHolder{ TextView textView; CheckBox checkBox; }}MainActivity如下:
import java.util.ArrayList;import java.util.HashMap;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.CheckBox;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.app.Activity;/** * Demo描述: * ListView的Item中含有CheckBox的处理方法 * */public class MainActivity extends Activity { private ListView mListView; private HashMapmHashMap; private ArrayList > mArrayList; public static HashMap mCheckBoxStatusHashMap=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ mCheckBoxStatusHashMap=new HashMap (); mArrayList=new ArrayList >(); mListView=(ListView) findViewById(R.id.listview); addDataForListView(); mListView.setAdapter (new ListViewAdapter(MainActivity.this, mArrayList, R.layout.listviewitem, new String []{"content"}, new int []{R.id.textView})); mListView.setOnItemClickListener(new ItemClickListenerImpl()); } private void addDataForListView(){ for (int i = 0; i < 20; i++) { mHashMap=new HashMap (); mHashMap.put("content", ""+i); mArrayList.add(mHashMap); mCheckBoxStatusHashMap.put(i, false); } } private class ItemClickListenerImpl implements OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position,long arg) { ListView lv = (ListView) parent; CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox); checkBox.toggle(); boolean itemIsCheck = checkBox.isChecked(); HashMap itemHashMap = (HashMap ) lv.getItemAtPosition(position); mCheckBoxStatusHashMap.put(position, itemIsCheck); } }}
转载地址:https://it9527.blog.csdn.net/article/details/8977581 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月20日 17时36分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
HUE
2019-04-30
CDH
2019-04-30
行为树 BT
2019-04-30
Cassandra & CQL
2019-04-30
Oracle数据库
2019-04-30
Oracle数据库命令
2019-04-30
plsql
2019-04-30
有限状态机FSM
2019-04-30
Win10 Docker
2019-04-30
Python绘制动画并保存为gif/mp4 (matplotlib)
2019-04-30
PRM概率路线图
2019-04-30
ROS(六)——订阅者Subscriber的编程实现(C++ & Python)
2019-04-30
ROS(七)——话题消息的定义与使用
2019-04-30
yolov3入门实战
2019-04-30
B树 & B+树
2019-04-30
Node-Red(一)——简介与安装
2019-04-30
representation learning 表示学习/表征学习
2021-07-03
Haar特征
2021-07-03
Python 之 histogram直方图
2019-04-30