问题
i am using expandableList and each child has its edittext to enter a number... when the child is pressed, the edittext shows. if it is not, the edittext stays invisible..the problem is when i pressed child "A", some other childs (for example child "L" and "Z") also show the edittext... here is my code in main activity :
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);
}
}
and I deleted my expandableadapter because i'm not using it anymore... i made a simple research by toasting the child and group position when i clicked... you know what... the child and group position randomly change everytime i scrolled up or down hope somebody help :) thanks a lot..
回答1:
Sorry if my answer is stupid: a quick look on your program shows that you use ==
and !=
for Java String. This is not supposed to work with Java 6, as far as I know. Java 7 ?
Consider using string1.equals(string2)
instead, this may help.
来源:https://stackoverflow.com/questions/22753389/onclick-childlist-on-expandablelist-android