gpt4 book ai didi

java - 使用 (for) 语句从 Json 数组获取数据到 Java 中的按钮

转载 作者:行者123 更新时间:2023-12-02 08:42:34 25 4
gpt4 key购买 nike

我正在尝试通过 (for) 语句从 Json 数组获取两个字符串(标题和链接)并创建新按钮,以便:

标题字符串将是按钮的文本每个按钮都会将用户带到自己的链接。

我成功创建了 java 代码并且它运行但是所有按钮都将用户带到同一个链接(第一个链接)。

这是我的代码:

public void fetchar() {

String zi = "";

try{

jarry=new JSONArray(jsonstring);

for (int k=0;k<jas.length();k++) {

jsn = jas.getJSONObject(k);

Button nb = new Button(this);

nb.setText(jsn.getString("title"));

nb.setId(k);

nb.setBackgroundResource(R.drawable.feld);

nb.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

try{
loadthis(jsn.getString("link"));
} catch(Exception e){}
}

});

space.addView(nb);
}

dial.dismiss();

}
catch(Exception e) {}
}
public void loadthis(String urk) {
try{
if (newString.equals("facebook")) {
urk="fb://facewebmodal/f?href="+urk;
} else if (newString.equals("youtube")) {
urk="vnd.youtube:"+urk;
}

Intent goi=new Intent(Intent.ACTION_VIEW,Uri.parse(urk));
startActivity(goi);

} catch(Exception e){}
}

I defined all the variables at the first of java file

如何在我的新按钮中进行类似的更改?

最佳答案

问题是您将 JsonObject 保存为类变量。将其更改为局部变量可以解决您的问题。我稍微修改了你的代码:

public void fetchar() {

String zi = "";

try{

JSONArray jarry = new JSONArray(jsonstring);

for (int k=0; k < jarry.length(); k++) {

JSONObject jsonObject = jarry.getJSONObject(k);

Button button = new Button(this);

button.setText(jsonObject.getString("title"));

button.setId(k);

button.setBackgroundResource(R.drawable.feld);

button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

try{
loadthis(jsonObject.getString("link"));
} catch(Exception e){}
}

});

space.addView(button);
}

dial.dismiss();

} catch(Exception e) {}
}

顺便说一句:尝试在代码中使用更清晰的变量名称。这确实有助于稍后再次理解代码。

关于java - 使用 (for) 语句从 Json 数组获取数据到 Java 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61280554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com