所以我想填補一個HashMap>但是當我調試我看到我的HashMap「gegevens」填補沒有問題,但我的主要HashMap的「事件」沒有按」噸。我用JSON數據填充我的HashMap,但是這根據調試器工作。這只是我的事件HashMap保持空白。這是我使用的方法:HashMap中充滿了字符串和其他HashMap中沒有得到填充
private HashMap<String,HashMap<String,String>> events = new HashMap<String,HashMap<String,String>>();
public class ReadJSONFeedTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls){
return readJSONFeed(urls[0]);
}
protected void onPostExecute(String result){
try{
JSONObject object = new JSONObject(result);
String channel = object.getString("channel");
JSONObject object2 = new JSONObject(channel);
JSONArray item = object2.getJSONArray("item");
for(int i = 0; i < item.length();i++)
{
HashMap<String,String> gegevens = new HashMap<String,String>();
JSONObject object3 = item.getJSONObject(i);
JSONObject objTitle = object3.getJSONObject("title");
String title = objTitle.getString("@text");
JSONObject objLink = object3.getJSONObject("link");
String link = objLink.getString("@text");
JSONObject objDescription = object3.getJSONObject("description");
String description = objDescription.getString("@text");
JSONObject objPubDate = object3.getJSONObject("pubDate");
String pubDate = objPubDate.getString("@text");
JSONObject objCreator = object3.getJSONObject("http://purl.org/dc/elements/1.1/creator");
String creator = objCreator.getString("@text");
JSONObject objGuid = object3.getJSONObject("guid");
String guid = objGuid.getString("@text");
gegevens.put("link",link);
gegevens.put("description",description);
gegevens.put("pubDate",pubDate);
gegevens.put("creator",creator);
gegevens.put("guid",guid);
events.put(title,gegevens);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
我不明白我在做什麼錯,但我很新的,這是第一次,我用一個HashMap一個HashMap裏面,所以我覺得有一個很可能我的錯誤在那裏。我必須能夠在另一個類中使用事件HashMap。
此代碼是我更大的MainActivity.Java類中。我試圖將我的事件HashMap傳遞給另一個框架。我通過使吸在這裏我先讓它執行ReadJSONFeedTask()和比返回事件的HashMap這樣做:
public HashMap<String,HashMap<String,String>> getEvents()
{
new ReadJSONFeedTask().execute("http://data.kortrijk.be/nieuws/rss.json?%2Fkortrijk%2F%2Fnieuws%2Frss=");
return events;
}
在我HomeFragment.java我試圖訪問的HashMap的OnCreateView像這樣的:
package com.example.arno.eventaris.Fragment;
import android.app.DialogFragment;
import android.net.wifi.WifiConfiguration;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.arno.eventaris.Activity.JSONActivity;
import com.example.arno.eventaris.Activity.MainActivity;
import com.example.arno.eventaris.Error.ErrorJason;
import com.example.arno.eventaris.R;
import java.util.HashMap;
/**
* A simple {@link Fragment} subclass.
*/
public class HomeFragment extends Fragment {
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//((MainActivity)getActivity()).ExecuteJson();
HashMap events =((MainActivity)getActivity()).getEvents();
return inflater.inflate(R.layout.fragment_home, container, false);
}
}
通常沒有問題將散列圖作爲另一個散列表的值。你的問題必須在別的地方。你是否看到任何打印到控制檯的異常? – beosign
沒有我看到的唯一事情是事件HashMap在循環過程中保持爲0,並且循環開始的事件變量再次消失。 – HeadachePanda
我的事件是否有可能被數據填充,但在循環開始後立即清空它本身? – HeadachePanda