请注意,我一直在搜索并试图以不同的方式实现它。但我需要一些建议。
我在我的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的帖子列表。
非常感谢任何建议。欢呼声。
答案 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 {