android – 如何在扩展列表视图项中获取复选框的ID?

前端之家收集整理的这篇文章主要介绍了android – 如何在扩展列表视图项中获取复选框的ID?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个扩展的列表视图,在父节点和子项目中都有复选框.
所有数据都来自Web服务,因此它的动态.

附图:

现在在菜单项上单击我想要获取所有复选框状态.
请指导我如何获得其中使用的复选框的ID.

代码附:

/**
 * 
 */


    public class Object_SecurityActivity extends ExpandableListActivity {
        @Override
        public boolean onChildClick(ExpandableListView parent,View v,int groupPosition,int childPosition,long id) {
            // TODO Auto-generated method stub
            return super.onChildClick(parent,v,groupPosition,childPosition,id);
        }

        @Override
        public void onContentChanged() {
            // TODO Auto-generated method stub
            super.onContentChanged();
        }

        private AndroidClientEntity obj_android_client;
        private static final String LOG_TAG = "ElistCBox2";
        private String username,password,clientname;

        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            //setContentView(R.layout.main);
            Intent security_intent = getIntent();
            String id = security_intent.getStringExtra("id");
            obj_android_client = (AndroidClientEntity) getApplicationContext();
            username = obj_android_client.getUsername();
            password = obj_android_client.getPassword();
            clientname = obj_android_client.getClientName();
            new Securityasync().execute(username,clientname,id);

        }

        class Securityasync extends AsyncTask

和适配器类:

public class Expandable_list_Adapter extends BaseExpandableListAdapter implements OnCheckedChangeListener {

    private Context context;
    private ArrayList

Child.xml

parent.xml与child相同.

请指导我如何获得复选框的ID,因为在选择的菜单项上我必须对此进行操作基础知识.

编辑:我试着setTag()和getTag().但现在可扩展列表视图显示出奇怪的行为.当我选择一个复选框并展开另一个组时,所有chekbok框都设置为默认值.
在这种情况下我必须做什么.我不知道resion为什么不保存状态.
我正面临与Strange behaviour in Expandablelistview – Android相同的问题
Plz指南

最佳答案
实际上,在运行时复制的列表或网格上添加的控件具有与设计时声明的ID相同的ID

例如:在你的情况下,这些是childname,rgb,check1

所以如果你需要知道哪个复选框唯一
你应该一个接一个地使用for循环

如果你想做点什么,你为什么不这样做

在复选框上单击事件

public void onClickevent(View v)
{
private CheckBox ch = (CheckBox) findViewById(v.getId());
    if (ch.IsChecked){
    //do some thing
     }
}

或者你应该和我一起去
方式添加一个独特的领域

 

因为它的宽度为零,所以它不可见,但它包含该行的id

现在为列表视图中的所有项运行for循环

findview你复选框,然后找到它的父,然后再次查找它的子(文本视图)这个id字段
所以现在你有id和复选框检查状态为prevIoUs
这样你就可以得到这个

见例子

v = (LinearLayout) findViewById(R.id.LinearNotebookList);
            TextView _id,ID,Name;
            for (int i = 0; i < nCount; i++) {
                v = (LinearLayout) NotebookList.getAdapter().getView(i,null,null);
                _id = (TextView) v.findViewById(R.id.txt_Notebook_ID);

                Available = (CheckBox) v
                        .findViewById(R.id.chkBoxNotebookAvailable);
                Display = (CheckBox) v.findViewById(R.id.chkBoxNotebookDisplay);
                Demo = (CheckBox) v.findViewById(R.id.chkBoxNotebookDemo);
                str_id = (String) _id.getText();

                if (Available.isChecked()) {
                    strAvailable = "YES";
                } else {
                    strAvailable = "NO";
                }
                if (Display.isChecked()) {
                    strDisplay = "YES";
                } else {
                    strDisplay = "NO";
                }
                if (Demo.isChecked()) {
                    strDemo = "YES";
                    } else {
                        strDemo = "NO";
                    }
}

你可以根据需要改变它

原文链接:https://www.f2er.com/android/430588.html

猜你在找的Android相关文章