checkbox-Listview复选框的选择

问题描述

Listview复选框的选择
我创建了一个自定义的 listview,有 Image,Text 和 checkbox。如何检测是否选择或未选择复选框。我使用了 onItemClick() 但是没有被调用。我使用的正确吗?

class PInfo {    String appname = """";    String pname = """";    Drawable icon; }public class InstalledApps extends Activity{private static LayoutInflater inflater=null;private ListView listview;private Activity activity;List<PInfo> installedApps = new ArrayList<PInfo>();@Overrideprotected void onCreate(Bundle savedInstanceState) {    // TODO Auto-generated method stub    super.onCreate(savedInstanceState);    setContentView(R.layout.applist);    activity = this;    listview = (ListView)findViewById(R.id.listView1);    PackageManager pm = getPackageManager();    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);    for(ApplicationInfo app : packages) {        PInfo newInfo = new PInfo();        newInfo.appname = (String) app.loadLabel(pm);        newInfo.pname = app.packageName;        //newInfo.icon = app.icon;        //Drawable dd = activity.getResources().getDrawable(app.icon);        newInfo.icon = app.loadIcon(getPackageManager());        if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1) {                    installedApps.add(newInfo);        } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {            installedApps.add(newInfo);        } else {            installedApps.add(newInfo);        }    }    InstalledAppsAdapter iap = new InstalledAppsAdapter(this installedApps);    listview.setAdapter(iap);}  }class InstalledAppsAdapter extends BaseAdapter{private Activity activity;private static LayoutInflater inflater=null;List<PInfo> installedApps = new ArrayList<PInfo>();ListView listview; public InstalledAppsAdapter(Activity a List<PInfo> b) {    // TODO Auto-generated constructor stub    installedApps = b;    activity = a;    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    listview = (ListView)activity.findViewById(R.id.listView1);       //Here is where I have put it currently..    listview.setOnItemClickListener(new OnItemClickListener() {        @Override        public void onItemClick(AdapterView<?> arg0 View arg1 int arg2                long arg3) {            // TODO Auto-generated method stub            PInfo newInfo = (PInfo) listview.getItemAtPosition(arg2);            System.out.println(newInfo.appname);        }    });}@Overridepublic int getCount() {    // TODO Auto-generated method stub    return installedApps.size();}@Overridepublic Object getItem(int arg0) {    // TODO Auto-generated method stub    return arg0;}@Overridepublic long getItemId(int arg0) {    // TODO Auto-generated method stub    return arg0;}@Overridepublic View getView(int arg0 View arg1 ViewGroup arg2) {    // TODO Auto-generated method stub    View  customView = inflater.inflate(R.layout.listrow arg2false);    ImageView iv = (ImageView)customView.findViewById(R.id.imageView1);    TextView tv= (TextView) customView.findViewById(R.id.textView2);    CheckBox cb= (CheckBox)customView.findViewById(R.id.checkBox1);    PInfo pinfo = installedApps.get(arg0);        tv.setText(""""+pinfo.appname);        iv.setImageDrawable(pinfo.icon);    return customView;}}

我要在哪里添加下面的代码(如果这是正确的listner)

listview.setOnItemClickListener(new OnItemClickListener() {        @Override        public void onItemClick(AdapterView<?> arg0 View arg1 int arg2                long arg3) {            // TODO Auto-generated method stub            PInfo newInfo = (PInfo) listview.getItemAtPosition(arg2);            System.out.println(newInfo.appname);        }    });

谢谢!

解决方案

在 getView 里面加入下面的代码:

@Overridepublic View getView(int arg0 View arg1 ViewGroup arg2) {// TODO Auto-generated method stubView  customView = inflater.inflate(R.layout.listrow arg2false);ImageView iv = (ImageView)customView.findViewById(R.id.imageView1);TextView tv= (TextView) customView.findViewById(R.id.textView2);CheckBox cb= (CheckBox)customView.findViewById(R.id.checkBox1);cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){public void onCheckedChanged(CompoundButton buttonView boolean isChecked){    if ( isChecked )    {        // perform logic    }}});}PInfo pinfo = installedApps.get(arg0);    tv.setText(""""+pinfo.appname);    iv.setImageDrawable(pinfo.icon);return customView;}

解决方案二:
首先你得确认是哪里报错,我觉得不是因为id的原因
定位到错误信息在哪没

时间: 2024-10-27 06:35:50

checkbox-Listview复选框的选择的相关文章

jQuery实现复选框批量选择与反选的方法

  本文实例讲述了jQuery实现复选框批量选择与反选的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 function selectAll(){ $('input[type|=checkbox]').attr('checked','checked'); } function cancelAll(){ $('input[type|=checkbox]').removeAttr('checked'); } 希望本文所述对大家的jQuery程序设计有所帮助.

jQuery实现复选框批量选择与反选的方法_jquery

本文实例讲述了jQuery实现复选框批量选择与反选的方法.分享给大家供大家参考.具体实现方法如下: function selectAll(){ $('input[type|=checkbox]').attr('checked','checked'); } function cancelAll(){ $('input[type|=checkbox]').removeAttr('checked'); } 希望本文所述对大家的jQuery程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问

限制复选框最多选择项的实现代码_javascript技巧

在一个招聘网站中,通过限制用户选择职位标签个数,可以精确定位用户的职位.例如,以复选框的形式为用户提供一下备选职位标签,限制用户最多选择3个,当超过三个时禁止用户继续选择. 复选框在问卷调查,招聘网站用的很广,今天来介绍一下限制复选框最多选择几项的方法: 思路: 监听复选框的onclick事件 checkbox.onclick = function(){ //代码块 } 监听复选框的checked属性: if(chckbox.checked){ //代码块 } HTML代码: < input t

Android开发之ListView,加入CheckBox(复选框),实现选择列表

http://blog.csdn.net/ahutzh/article/details/6911095 Android ListView没行加入CheckBox,实现选择列表,既可点击复选框进行选中,也可以点击list一行进行选中,效果图如下: 下面贴下主要代码的实现: 对于列表中复选框,我们需要在复选框的状态发生变化时,保存复选框的状态,不然在拖动列表过程中,会丢失复选框的状态. 在这里我们采用下面方式保存: [java] view plaincopy public class Person 

JavaScript限定复选框的选择个数示例代码_javascript技巧

有10个复选框,用户最多只能勾选3个,否则就灰掉所有复选框. (用户再次勾掉复选框时,仍然可以再次选择.) 将可变的部分设置为JS的参数,以实现代码复用. JS代码 第一个参数为复选框的name,第二个参数为最多允许的勾选值. 复制代码 代码如下: function choicetest(name,num){ var choicearr = document.getElementsByName(name); var a=0; for(var i=0;i<choicearr.length;i++)

JXCELL实例学习与研究(三) 之 EXCEL实现复选框 与 选择区域填充颜色

代码如下: 主要是第一列显示复选框,以后三列显示其列头的复选框,具体有段EXCEL的操作方式,木有看得太懂,大致就是操作EXCEL的,需要查询一下EXCEL语句 import com.jxcell.DataValidation; import com.jxcell.View; public class DataValidationSample { public static void main(String args[]) { View m_view = new View(); try { m_

checkbox设置复选框的只读效果不让用户勾选_javascript技巧

在Web开发中,有时候需要显示一些复选框(checkbox),表明这个地方是可以进行勾选操作的,但是有时候是只想告知用户"这个地方是可以进行勾选操作的"而不想让用户在此处勾选(比如在信息展示页面),这时候就需要将复选框设置成只读的效果. 提到只读,很容易想到使用readonly属性,但是对于复选框来说,这个属性和期望得到的效果是有差别的.原因在于readonly属性关联的是页面元素的value属性(例如textbox,设置了readonly就不能修改输入框的文本内容),而复选框的勾选/

JQuery CheckBox(复选框)操作方法汇总

  1. 获取单个checkbox选中项(三种写法): 代码如下: $("input:checkbox:checked").val() 或者 代码如下: $("input:[type='checkbox']:checked").val(); 或者 代码如下: $("input:[name='ck']:checked").val(); 2. 获取多个checkbox选中项: 代码如下: $('input:checkbox').each(functi

JQuery CheckBox(复选框)操作方法汇总_jquery

1.   获取单个checkbox选中项(三种写法): 复制代码 代码如下: $("input:checkbox:checked").val() 或者 复制代码 代码如下: $("input:[type='checkbox']:checked").val(); 或者 复制代码 代码如下: $("input:[name='ck']:checked").val(); 2.   获取多个checkbox选中项: 复制代码 代码如下:     $('in