是否有一种方法可以放置请求,并在值非常相似时循环使用响应?我想到了for循环,但找不到实现此目的的方法。
我正在从Android设备发送请求,并且TextView
正在等待响应。收到响应后,我正在检查它是否为空或为null,如果不是,则设置TextView
的文本并更改可见性(因为默认设置已消失)。
例如,这将是我的JSON
。
{
spaghetti: [
{
strIngredient1: "1 pound ground beef",
strIngredient2: "1 onion, chopped",
strIngredient3: "null",
strIngredient4: "1 (28 ounce) can diced tomatoes",
strIngredient5: ""
}
]
}
我的状况:
if(!"".equals(dinner.getStrIngredient1()) && !"null".equals(dish.getStrIngredient1())) {
firstIngredient.setText(dinner.getStrIngredient1());
firstIngredient.setVisibility(View.VISIBLE);
}
if(!"".equals(dinner.getStrIngredient2()) && !"null".equals(dish.getStrIngredient2())) {
secondIngredient.setText(dinner.getStrIngredient2());
secondngredient.setVisibility(View.VISIBLE);
}
...
正如您在上面看到的,我有相似的值,我真的需要重复五次吗?有办法使它“干净”吗?
答案 0 :(得分:0)
尝试这个。
try {
JSONArray spaghetti = new JSONArray (your_response.getString("spaghetti"));
for (int i = 1; i < spaghetti.length(); i++) {
JSONObject json = new JSONObject(spaghetti.get(i).toString());
switch(i) {
case 1:
if (json.getString("strIngredient" + i).length() > 0 && !"null".equals(json.getString("strIngredient" + i))) {
firstIngredient.setText(json.getString("strIngredient" + i));
firstIngredient.setVisibility(View.VISIBLE);
}
break;
case 2:
// So on and so fort.
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:0)
我认为是的,或者您可以使用切换用的大小写,但是文字也是如此。
答案 2 :(得分:0)
使用Java Reflection。 但是为此,您需要分别将firstIngredient,secondIngredient命名分别调整为原料1,原料2。
在您的成分数组列表上获取for循环 然后使用java反射动态地形成方法
Method method = obj.getClass().getMethod(methodName);//in methodname you can write method you like to invoke like ingredient+i
method.invoke(obj, arg1, arg2);