【发布时间】:2014-03-31 03:58:20
【问题描述】:
我正在使用expandableList,每个孩子都有自己的edittext来输入一个数字......当孩子被按下时,edittext会显示出来。如果不是,则edittext保持不可见..问题是当我按下子“A”时,其他一些子(例如子“L”和“Z”)也显示edittext...这是我在main中的代码活动:
protected void onCreate(Bundle konsumsi) {
super.onCreate(konsumsi);
setContentView(R.layout.konsumsi_user);
exKonsumsi = (ExpandableListView) findViewById(R.id.EVkonsumsi_user);
exKonsumsi.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
prepareListDataKonsumsi();
exKonsumsiAdapter = new com.ta.helper.ExpandableListAdapterKonsumsi(
this, listDataHeaderKonsumsiUser, listDataChildKonsumsiUser);
exKonsumsi.setAdapter(exKonsumsiAdapter);
kolomTakaran = (TextView) findViewById(R.id.takaran);
takaran = ExpandableListAdapterKonsumsi.takaran;
kolomTakaran.setText("" + takaran);
exKonsumsi.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
EditText kolomEditTakaran = (EditText) v
.findViewById(R.id.kolomTakaran);
CheckedTextView listChild = (CheckedTextView) v
.findViewById(R.id.lblListItemKonsumsi);
/* for (int i = 0; i < listDataHeaderKonsumsiUser.size(); i++) {
if (listDataHeaderKonsumsiUser.get(groupPosition) == listDataHeaderKonsumsiUser
.get(i)) {
int a = listDataChildKonsumsiUser.get(
listDataHeaderKonsumsiUser.get(i)).size();
for (int j = 0; j < a; j++) {
if (listChild.getText().toString() == listDataChildKonsumsiUser
.get(listDataHeaderKonsumsiUser.get(i))
.get(j)) {
kolomEditTakaran.setVisibility(v.VISIBLE);
}else{
kolomEditTakaran.setVisibility(v.INVISIBLE);
}
}
}
}*/
return true;
}
});
}
private void prepareListDataKonsumsi() {
listDataHeaderKonsumsiUser = new ArrayList<String>();
listDataChildKonsumsiUser = new HashMap<String, List<String>>();
Collections.addAll(listDataHeaderKonsumsiUser, getResources()
.getStringArray(R.array.header_konsumsi_user));
List<String> daftarMakananTersimpan = new ArrayList<String>();
List<String> daftarMakanan = new ArrayList<String>();
Collections.addAll(
daftarMakanan,
getResources().getStringArray(
R.array.child_konsumsi_user_daftar_makanan));
Collections.addAll(
daftarMakananTersimpan,
getResources().getStringArray(
R.array.child_konsumsi_user_daftar_makanan_tersimpan));
listDataChildKonsumsiUser.put(listDataHeaderKonsumsiUser.get(0),
daftarMakananTersimpan);
listDataChildKonsumsiUser.put(listDataHeaderKonsumsiUser.get(1),
daftarMakanan);
}
}
我删除了我的可扩展适配器,因为我不再使用它了...我做了一个简单的研究,当我单击时举杯庆祝孩子和组的位置...你知道吗...孩子和组的位置随机变化每次我向上或向下滚动 希望有人帮助:) 非常感谢..
【问题讨论】:
-
与最近的其他帖子非常相似,问题可能出在您的第二个代码块周围的上下文中。每行都有一个获取 OnClickListener 的视图,您有什么计划确保每行的 OnClickListener 有办法找出点击了哪一行?一种常见的模式是在每一行中的某些内容上设置标签(),并让 OnClickListener 调用 v.getTag() 并使用结果来确定支持数据的哪个数据项对应于被选中的单元格。
-
'listChild' 是你的可扩展列表视图??
-
你为什么不使用'setOnChildClickListener'..??
-
ASP... setOnChildClickListener 用于主要活动并使用 main.xml ...我要更改的是 childlistitem.xml 中的 EditText ...
-
@RobP 我已经尝试过你的建议......但它没有工作......
标签: android onclick expandablelistview