当使用Java将解析后的JSON推送到映射中时,如何在映射中显示重复的值以显示为列表项。地图<;字符串,设置字符串>;
我有两个不同的“想法”共享同一个url我需要两个url都显示当前我只能看到其中一个重复的url。如何将它们分别设置为“专业”,从而显示两个URL?当使用Java将解析后的JSON推送到映射中时,如何在映射中显示重复的值以显示为列表项。地图<;字符串,设置字符串>;,java,android,json,Java,Android,Json,我有两个不同的“想法”共享同一个url我需要两个url都显示当前我只能看到其中一个重复的url。如何将它们分别设置为“专业”,从而显示两个URL? 另外,我正在从一个静态Json页面解析这些数据,我知道使用集合过滤器是重复的,所以我想单独调用每个项,因为我必须在这个任务中使用集合 谢谢你的帮助 public String loadJSON() { String json = null; try { InputStream is = getActivity().g
另外,我正在从一个静态Json页面解析这些数据,我知道使用集合过滤器是重复的,所以我想单独调用每个项,因为我必须在这个任务中使用集合 谢谢你的帮助
public String loadJSON() {
String json = null;
try {
InputStream is = getActivity().getAssets().open("parse.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
int image[] = {R.drawable.1, R.drawable.2, R.drawable.3,
R.drawable.4, R.drawable.5, R.drawable.6};
try {
JSONObject object = new JSONObject(loadJSON());
JSONArray array = object.getJSONArray("gig");
for (int i =0; i <array.length(); i++) {
JSONObject obj_inside = array.getJSONObject(i);
String idea = obj_inside.getString("id");
JSONArray contents = obj_inside.getJSONArray("cont");
for (int j =0; j < contents.length(); j++) {
int ran_image = image[((int) (image.length * Math.random()))];
JSONObject jsonObject = contents.getJSONObject(j);
String contT = jsonObject.getString("contT");
String campU = jsonObject.getString("campU");
Map<String,Collection<String>> map=new HashMap<String, Collection<String>>();
Set<String> url = new HashSet<String>();
url.add(campU);
map.put(idea, url);
System.out.println(map.toString());
}
}
}
}
publicstringloadjson(){
字符串json=null;
试一试{
InputStream=getActivity().getAssets().open(“parse.json”);
int size=is.available();
字节[]缓冲区=新字节[大小];
is.read(缓冲区);
is.close();
json=新字符串(缓冲区,“UTF-8”);
}捕获(IOEX异常){
例如printStackTrace();
返回null;
}
返回json;
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
int image[]={R.drawable.1,R.drawable.2,R.drawable.3,
R.drawable.4,R.drawable.5,R.drawable.6};
试一试{
JSONObject对象=新的JSONObject(loadJSON());
JSONArray数组=object.getJSONArray(“gig”);
对于(int i=0;i您可以尝试使用Map
Map Map=newhashmap();
列表url=新的ArrayList();
add(新字符串(“str1”);
add(新字符串(“str1”);
map.put(“,url);
这样,您就可以灵活地在地图中放置列表或设置为值为什么要使用Set,为什么不使用List?这些都是给我的要求,我可以使用List并仍然使用地图的设置吗?不,您不能在地图中添加List对象。在您的案例中,我认为使用集合是为了json转换。尽管设置represents JsonArray,List也对应于JsonArray,所以我认为如果它不妨碍其他任何事情,你应该使用List。我希望使用List而不是Set,但是当我这样做时,它会导致整个程序尝试迁移已经声明为这样的预写代码。不过,如果你想到任何方法,谢谢你的帮助这对我来说是非常有价值的:-)我刚刚尝试了它,它给了我一个错误,因为我正在将url设置在一个我已经声明为Set的位置,当我强制转换它时,它给了我一个强制转换异常java.lang.ClassCastException:java.util.ArrayList不能强制转换为java.util.Set我想这可能会起作用,但是我如何将这个映射设置到我的列表项,我有一个显示为s的列表uch ListItem li=new ListItem();li=new ListItem();li.name=contT;li.image=ran\u image;li.url=campU;listItems.put(li.url,li);url.add(li.url);在显示时,它仍在消除重复值。请在代码中显示,它给了我一个异常,java.lang.ClassCastException:java.util.ArrayList不能转换为java.util.Setuse Map,而不是MapMapMap=new HashMap();Set url=new HashSet();url.add(campU);map.put(idea,url);System.out.println(map.toString());我就是这样得到它的,当我使用list而不是Set时,它会导致一个异常。我将url设置在一个我已经声明设置的位置
Map<String,Collection<String>> map=new HashMap<String, Collection<String>>();
List<String> url = new ArrayList<String>();
url.add(new String("str1"));
url.add(new String("str1"));
map.put("", url);