【发布时间】:2020-12-21 01:16:43
【问题描述】:
在我的可扩展列表视图中,我编写了 (if) 语句,如果子行中包含两个单词,则返回一个(对话框)..
这里是代码:
.......
childObjects.add(new ChildObject(cetamol + " " + syr + " 160 " + mg5ml
, cetamolDoseMini160));
..........
elv = findViewById(R.id.elv);
elv.setOnGroupExpandListener(onGroupExpandListenser);
MyExpandableAdapter adapter = new MyExpandableAdapter(this, getData());
elv.setAdapter(adapter);
elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
for (int i = 0; i < ((ViewGroup) v).getChildCount(); ++i) {
View nextChild = ((ViewGroup) v).getChildAt(i);
if (nextChild.getId() == R.id.txtChildName) {
String data = ((TextView) nextChild).getText().toString();
String paracetamol = getResources().getString(R.string.Paracetamol);
if (data.contains(paracetamol)|| data.contains("160")) {
AlertDialog.Builder builder = new AlertDialog.Builder(Analgesics.this);
builder.setTitle(" Paracetamol 160:");
String[] drugsTrades = {"Hayamol 160 ", "Paradrin 160 "};
builder.setItems(drugsTrades, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog dialog = builder.create();
// dialog.getWindow().setBackgroundDrawableResource(R.color.translucent_black);
dialog.show();
}
}
}
return true;
}
});
但(if 语句)看到(仅)第一部分“扑热息痛”,而没有看到第二部分“160”
【问题讨论】:
-
您确定问题不在于第一个
if语句,您似乎在比较字符串与==而不是.equals()? -
我使用 (data.contains) 而不是 (data.equals) ,当两个单词出现在原始数据中时,我想返回一个值
-
我说的是第一个
if,而不是第二个。您在哪里使用==。不要那样做。 -
到 second
if,尝试使用&&而不是||,因为如果左侧为真,则不会评估右侧。 (short-circuit evaluation) -
是的,真的不要使用
==来比较字符串。即使它偶尔会起作用。但只是为了理解......你是说你试图匹配包含“扑热息痛”和“160”的字符串,而不是一个或另一个?如果是这种情况,是的,使用&&而不是||进行 AND。
标签: java android if-statement expandablelistview