我有一个扩展的列表视图,在父节点和子项目中都有复选框.
所有数据都来自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
原文链接:https://www.f2er.com/android/430588.html例如:在你的情况下,这些是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";
}
}
你可以根据需要改变它