如何将参数列表从JSON添加到HashMap?

时间:2016-02-03 21:13:05

标签: java android json android-volley

请注意,我一直在搜索并试图以不同的方式实现它。但我需要一些建议。

我在我的Java类中有以下Map(静态项已注释掉)

    /**
 * An array of YouTube videos
 */


public static List<YouTubeVideo> ITEMS = new ArrayList<>();

/**
 * A map of YouTube videos, by ID.
 */


public static Map<String, YouTubeVideo> ITEM_MAP = new HashMap<>();



/*
static {

    addItem(new YouTubeVideo("x-hH_Txxzls", "Titlee 2"));
    addItem(new YouTubeVideo("TTh_qYMzSZk", "Title 3"));
    addItem(new YouTubeVideo("tttG6SdnCd4", "Some Title"));
    addItem(new YouTubeVideo("x-hH_Txxzls", "This post title"));
    addItem(new YouTubeVideo("TTh_qYMzSZk", "Post title"));
    addItem(new YouTubeVideo("tttG6SdnCd4", "Titles"));
    addItem(new YouTubeVideo("x-hH_Txxzls", "again titles"));

}*/


private void addItem(final YouTubeVideo item) {
    ITEMS.add(item);
    ITEM_MAP.put(item.id, item);
}

/**
 * A POJO representing a YouTube video
 */
public static class YouTubeVideo {
    public String id;
    public String title;

    public YouTubeVideo(String id, String content) {
        this.id = id;
        this.title = content;
    }



    @Override
    public String toString() {
        return title;
    }
}

这是我的解析器(现在它将数据发送到另一个列表并且它正在进行中)

private void getData(){
    //Showing a progress dialog
    final ProgressDialog loading = ProgressDialog.show(getActivity(),"Loading Data", "Please wait...",false,false);

    //Creating a json array request
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    //Dismissing progress dialog
                    loading.dismiss();

                    //calling method to parse json array
                    parseData(response);

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    //Creating request queue
    RequestQueue requestQueue = Volley.newRequestQueue(getActivity());

    //Adding request to the queue
    requestQueue.add(jsonArrayRequest);

}

private void parseData(JSONArray array){
    for(int i = 0; i<array.length(); i++) {
        IndividualPosts IndividualPost = new IndividualPosts();
        JSONObject json = null;
        try {
            json = array.getJSONObject(i);
            IndividualPost.setTitleIn(json.getString(Config.TAG_TITLE));
            IndividualPost.setLink(json.getString(Config.TAG_VIDEO_ID));


        } catch (JSONException e) {
            e.printStackTrace();
        }
        listIndividualPosts.add(IndividualPost);
    }

    //Finally initializing our adapter
    adapter = new CardAdapter(listIndividualPosts, getActivity());

    //Adding adapter to recyclerview
    recyclerView.setAdapter(adapter);


}

但我无法了解如何将数据发送到此hashMap,就像我有静态项一样:(

主要关注的是HashMap应该有一个项目列表,因为它可以更新。 基本上,它会创建一个包含title和videoThumbnail的帖子列表。

非常感谢任何建议。欢呼声。

1 个答案:

答案 0 :(得分:0)

像这样改变你的方法

public static void addItem(YouTubeVideo item) {
    ITEMS.add(item);
    ITEM_MAP.put(item.id, item);
}

然后在try块中添加这些

YouTubeVideo youtubeVideo = new YouTubeVideo(
      json.getString(Config.TAG_VIDEO_ID), json.getString(Config.TAG_TITLE));

Config.addItem(youtubeVideo); // assuming addItem in class Config

同样将YouTubeVideo视为非静态类似或更好地在独立Java文件中创建此类

public class YouTubeVideo {