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

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

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

附图:

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

代码附:

  1. /**
  2. *
  3. */
  4. public class Object_SecurityActivity extends ExpandableListActivity {
  5. @Override
  6. public boolean onChildClick(ExpandableListView parent,View v,int groupPosition,int childPosition,long id) {
  7. // TODO Auto-generated method stub
  8. return super.onChildClick(parent,v,groupPosition,childPosition,id);
  9. }
  10. @Override
  11. public void onContentChanged() {
  12. // TODO Auto-generated method stub
  13. super.onContentChanged();
  14. }
  15. private AndroidClientEntity obj_android_client;
  16. private static final String LOG_TAG = "ElistCBox2";
  17. private String username,password,clientname;
  18. @Override
  19. public void onCreate(Bundle icicle) {
  20. super.onCreate(icicle);
  21. //setContentView(R.layout.main);
  22. Intent security_intent = getIntent();
  23. String id = security_intent.getStringExtra("id");
  24. obj_android_client = (AndroidClientEntity) getApplicationContext();
  25. username = obj_android_client.getUsername();
  26. password = obj_android_client.getPassword();
  27. clientname = obj_android_client.getClientName();
  28. new Securityasync().execute(username,clientname,id);
  29. }
  30. class Securityasync extends AsyncTask

和适配器类:

  1. public class Expandable_list_Adapter extends BaseExpandableListAdapter implements OnCheckedChangeListener {
  2. private Context context;
  3. private ArrayList

Child.xml

parent.xml与child相同.

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

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

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

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

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

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

在复选框上单击事件

  1. public void onClickevent(View v)
  2. {
  3. private CheckBox ch = (CheckBox) findViewById(v.getId());
  4. if (ch.IsChecked){
  5. //do some thing
  6. }
  7. }

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

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

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

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

见例子

  1. v = (LinearLayout) findViewById(R.id.LinearNotebookList);
  2. TextView _id,ID,Name;
  3. for (int i = 0; i < nCount; i++) {
  4. v = (LinearLayout) NotebookList.getAdapter().getView(i,null,null);
  5. _id = (TextView) v.findViewById(R.id.txt_Notebook_ID);
  6. Available = (CheckBox) v
  7. .findViewById(R.id.chkBoxNotebookAvailable);
  8. Display = (CheckBox) v.findViewById(R.id.chkBoxNotebookDisplay);
  9. Demo = (CheckBox) v.findViewById(R.id.chkBoxNotebookDemo);
  10. str_id = (String) _id.getText();
  11. if (Available.isChecked()) {
  12. strAvailable = "YES";
  13. } else {
  14. strAvailable = "NO";
  15. }
  16. if (Display.isChecked()) {
  17. strDisplay = "YES";
  18. } else {
  19. strDisplay = "NO";
  20. }
  21. if (Demo.isChecked()) {
  22. strDemo = "YES";
  23. } else {
  24. strDemo = "NO";
  25. }
  26. }

你可以根据需要改变它

猜你在找的Android相关文章