繁体   English   中英

从asynctask类发送3个列表到另一个类

[英]Send 3 list from asynctask class to another class

我正在尝试将3个列表从AsyncTask类发送到另一个。 AsyncTask类从json中获取3个不同的数据,并插入3个字符串列表。 我必须将此列表发送到另一个类以插入回收站适配器。

public class FetchNewsData extends AsyncTask<String, String, JSONObject> {

static List<String> title = new ArrayList<>();
static List<String> body = new ArrayList<>();
static List<String> imageUrl = new ArrayList<>();

public List<String> getTitle() {
    return title;
}

public List<String> getBody() {
    return body;
}

public List<String> getImageUrl() {
    return imageUrl;
}

private static String url = "https://content.guardianapis.com/search?format=json&show-fields=thumbnail,trailText&api-key=f627bebe-3c4f-4fee-a2fc-3368a3b098c7";
private static final String TAG_RESPONSE = "response";
private static final String TAG_RESULTS = "results";
private static final String TAG_TITLE = "webTitle";
private static final String TAG_DATE = "webPublicationDate";
private static final String TAG_SECTION_NAME = "sectionName";
private static final String TAG_FIELDS = "fields";
private static final String TAG_TEXT = "trailText";
private static final String TAG_IMG_URL = "thumbnail";


@Override
protected JSONObject doInBackground(String... args) {
    JSONParser jParser = new JSONParser();

    // Getting JSON from URL
    JSONObject json = jParser.getJSONFromUrl(url);
    return json;
}

@Override
protected void onPostExecute(JSONObject json) {

    try {
        // Getting JSON Array
        JSONObject response = json.getJSONObject(TAG_RESPONSE);

        JSONArray result = response.getJSONArray(TAG_RESULTS);

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

            JSONObject resultsObjects = result.getJSONObject(i);

            JSONObject fields = resultsObjects.getJSONObject(TAG_FIELDS);


            // Storing  JSON item in a Variable
            if (resultsObjects.has(TAG_TITLE)) {
                String header = resultsObjects.getString(TAG_TITLE);
                title.add(header);
            } else title.add(null);

            if (fields.has(TAG_TEXT)) {
                String text = fields.getString(TAG_TEXT);
                body.add(text);
            } else body.add(null);

            if (fields.has(TAG_IMG_URL)) {
                String imgUrl = fields.getString(TAG_IMG_URL);
                imageUrl.add(imgUrl);
            } else imageUrl.add(null);

        }

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


}
}

在以下代码中, RecyclerAdapter应该RecyclerAdapter 3个列表作为参数。 我怎样才能做到这一点。 有人能帮助我吗?

private void setupRecyclerView(RecyclerView recyclerView) {
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    List<String> itemList;
    itemList = createItemList();

    List<String> titleList=new ArrayList<>(itemData.getTitle());

    String[] itemlistToArray = new String[itemList.size()];
    itemlistToArray = itemList.toArray(itemlistToArray);

    String[] asd= {"a","b","c"};

    String[] titlelistToArray = new String[titleList.size()];
    titlelistToArray = titleList.toArray(titlelistToArray);

    recyclerAdapter = new RecyclerAdapter(asd, itemlistToArray, itemlistToArray);
    recyclerView.setAdapter(recyclerAdapter);
}

为什么不直接从onPostExecute方法调用setupRecyclerView方法?

如果您不希望将这些列表存储在自定义类中,然后将该类对象通过意图传递给其他活动。

1)创建一个自定义类MyLists并在此类中设置这些列表。

2)使用Serializable实现此类。

3)通过意图将Mylists类对象传递给另一个活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM