android 循环创建json数组对象,Android Studio解析JSON并将对象添加到数组中只需按第二个按钮?...

我的Android Studio应用程序有一个问题,因为我试图从URL解析JSON数据,并用数据创建对象“Director”,然后将每个对象存储在一个数组中。问题是,当我按下按钮启动执行此操作的方法时,Logcat显示在方法的末尾没有向数组添加任何内容。但是,当我第二次按下按钮时,它们会被添加到数组中。以下是我的代码:

public class MainActivity extends AppCompatActivity implements MainAdapter.OnCompanyClickedListener {

private Button search;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//Button to start method

search = (Button) findViewById(R.id.btnSearch);

search.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v) {

searchCompanyDirectors("02293426");

}

});

}

//Parse JSON File From API and Create Directors

public void searchCompanyDirectors(final String companyNumber){

Thread thread = new Thread(new Runnable(){

@Override

public void run(){

HttpClient httpClient = new HttpClient();

try{

final String response = httpClient.run("https://MyApiURL"+companyNumber);

runOnUiThread(new Runnable(){

@Override

public void run(){

try {

JSONObject jsonObject = new JSONObject(response);

JSONArray array = jsonObject.getJSONArray("items");

for (int i = 0; i < array.length();i++){

JSONObject o = array.getJSONObject(i);

String appointment = o.getString("links");

String parsedAppointment = parseApp(appointment);

Director director = new Director(o.getString("name"),parsedAppointment);

Director.directorList.add(director);

}

Log.d("tag1",Director.directorList.toString());

}catch (JSONException e){

e.printStackTrace();

}

}

});

}

catch (Exception ex){

ex.printStackTrace();

}

}

});

thread.start();

Log.d("tag2",Director.directorList.toString());

}

//Parse Returned String From JSON

public String parseApp(String appointment){

String[] arrayDirectors = appointment.split("/",3);

String[] split = arrayDirectors[2].split("\\\\");

return split[0];

}

}

@Override

public void onCompanyClicked(int position){

//Do stuff with directorlist...

}

我的导演班:

public class Director {

private String name;

private String appointment;

public static List directorList = new ArrayList<>();

public Director (String name, String appointment){

this.name = name;

this.appointment = appointment;

}

public String getName() {

return name;

}

}

按下第一个按钮时,Logcat“tag1”输出:

[Director1, Director2, Director3]

按下第一个按钮时,Logcat“tag2”输出:

[]

按下第二个按钮时,Logcat“tag1”输出:

[Director1, Director2, Director3, Director1, Director2, Director3]

按下第二个按钮时,Logcat“tag2”输出:

[导演1,导演2,导演3]

当我试图在最后一个方法中使用directorList时(它基于directorList数组执行操作),问题就出现了,但是由于第一次按按钮完成该方法时数组是空的,所以它没有执行它应该执行的操作。我也不确定为什么Logcat“tag2”在方法中间显示要添加到数组中的值,然后在方法末尾显示空数组,而Logcat“tag1”显示要添加的值?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值