android - 复选框无法与 ListView 一起正常工作

标签 android listview checkbox

我正在为 listview 的每个 Iten 实现带有 listview 的复选框。我遇到的问题是当我单击任何一个复选框然后一些其他未单击的复选框也被随机单击时。

public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            View vi = convertView;
            final int as=position;
            if (convertView == null) { // if it's not recycled, initialize some
                // attributes
                LayoutInflater  inflater = (LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                vi = inflater.inflate(R.layout.grid_item, null);
                holder = new ViewHolder();

                holder.textheader = (TextView) vi.findViewById(R.id.item1);
                holder.textcpu = (TextView) vi.findViewById(R.id.item2);
                holder.text_modified_date = (TextView) vi.findViewById(R.id.item4);
                holder.text_cpu = (TextView) vi.findViewById(R.id.item3);
                holder.text_checkbox=(CheckBox)vi.findViewById(R.id.checkBox1);
                vi.setTag(holder);

                holder.text_checkbox.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (holder.text_checkbox.isClickable()) {
                            itemChecked.set(as, true);
                            packages=as;
                        } else if (!holder.text_checkbox.isClickable()) {
                            itemChecked.set(as, false);
                        }
                        String packag=app_package.get(as);
                        Log.d("package listttttttttt", packag);
                    }
                });


            } else {
                holder = (ViewHolder) vi.getTag();


            }

最佳答案

试试下面的代码

public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        View vi = convertView;
        final int as=position;
        if (convertView == null) { // if it's not recycled, initialize some
            // attributes
            LayoutInflater  inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            vi = inflater.inflate(R.layout.grid_item, null);
            holder = new ViewHolder();

            holder.textheader = (TextView) vi.findViewById(R.id.item1);
            holder.textcpu = (TextView) vi.findViewById(R.id.item2);
            holder.text_modified_date = (TextView) vi.findViewById(R.id.item4);
            holder.text_cpu = (TextView) vi.findViewById(R.id.item3);
            holder.text_checkbox=(CheckBox)vi.findViewById(R.id.checkBox1);
            vi.setTag(holder);

        } else {
            holder = (ViewHolder) vi.getTag();
        }          


             holder.text_checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() 
             {          
              public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)      
                {                                  
                if(isChecked)
                {
                      // do your stuff
                      itemChecked.set(as, true);
                        packages=as;
                }
                else
                {
                      // do your stuff
                      itemChecked.set(as, false);
                }       

        }
    });

if(itemChecked.size() != 0 && itemChecked.get(position))
        holder.text_checkbox.setChecked(true);
    else
        holder.text_checkbox.setChecked(false);

关于android - 复选框无法与 ListView 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12085661/

相关文章:

jquery - 从另一个复选框触发的复选框事件

android - 将 Android 应用程序上的 SQLite 数据库与远程 MySQL 数据库同步

android - 打盹/待机功能如何影响位置更新?

Android LinearLayout 填充中间

android - 单击 ListView 中的项目时,我想在另一个 Activity 中打开图像

java - 在 JavaFx 中向 ListView 添加项目...线程?

android - 如何检查应用程序是否是 Android 中的非系统应用程序?

android - 带有自定义 View 的多项选择列表?

javascript - jQuery 和复选框,我看不到变化

Javascript - 从选中的复选框中检索输入值并对其进行处理