java - 使用 AsyncTask 从 MainActivity 中的 my_Data 类读取数据

标签 java android

如何从asynctask获取2个数组列表(1 String,1 Integer)并在Mainactivity中打印它们??

这是我的 AsyncTask:

private class ReadJSONFeedTask extends AsyncTask<String, Void, String> {
    @Override

    protected String doInBackground(String... urls) {

        return readJSONFeed(urls[0]);
    }
    protected void onPostExecute(String result) {
        try {
            JSONArray jsonArray = new JSONArray(result);
            Log.i("JSON", "Number of surveys in feed: " +jsonArray.length());
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                Toast.makeText(getBaseContext(), jsonObject.getString("city"),Toast.LENGTH_SHORT).show();

               x.setStation_name(jsonObject.getString("city"));
               x.setStation_petrol_amount(jsonObject.getInt("amount"));

            }

            System.out.println("*******"+x.getStation_name());
            System.out.println("*******"+x.getStation_petrol_amount());



        } catch (Exception e) {
            e.printStackTrace();
        }

    }
        }

这是我在 system.out.print >> 中的输出,没问题。

这是 my_Data 类:

 public      ArrayList<String> city = new ArrayList<>() ;
      public      ArrayList<Integer> amount = new ArrayList<>() ;


    public  void setStation_petrol_amount(int station_petrol_amount) {
        amount.add(station_petrol_amount);
    }

    public  void setStation_name(String station_name)
    {
        city.add(station_name);
    }

       public  ArrayList<String> getStation_name()
    {
        return city;
    }

  public  ArrayList<Integer> getStation_petrol_amount() {
        return amount;
    }

我的主要 Activity :

    new ReadJSONFeedTask().execute();
    ReadJSONFeedTask ob = new ReadJSONFeedTask();
        ob.execute("http://192.168.12.1/server/index.php");
        System.out.println(">>>>:"+x.getStation_name());
        System.out.println(">>>>:"+x.getStation_petrol_amount());

如果system.out.print>>没有数据,如何获取?

最佳答案

How to get the result of OnPostExecute() to main activity because AsyncTask is a separate class?

查看问题的答案..一旦线程完成工作,您可以将 2 个数组列表作为回调方法的参数传递给被调用的 Activity

在该示例中,应该像这样修改界面

public interface AsyncResponse {
void processFinish(List<String> firstlist,List<Integer> secondlist);}

然后在执行后,您必须将结果数组列表作为参数传递

或者您可以通过替换如下接口(interface)将 x 对象列表传递给被调用的 Activity

   public interface AsyncResponse {
void processFinish(List<X> firstlist);}

关于java - 使用 AsyncTask 从 MainActivity 中的 my_Data 类读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29207203/

相关文章:

Java Swing JSpinner 与 NumberEditor 显示空白而不是零

java - 如何在 Java 中从 ArrayList 读取和写入文件

java - 根据时间值返回不同的值

android - 如何从 Api 获取数据到 ListView ?

android - 如何最小化android中的整个应用程序?

Android: scaleType 扩展到屏幕

java - 为什么我们需要一个独立应用程序的连接池?

Java GUI布局问题

javascript - 将变量从 Android Activity 传递到 JavaScript

android - XStream 和 Proguard