change contents json parser
This commit is contained in:
parent
70e23931de
commit
82f0a9ccd8
3 changed files with 161 additions and 11 deletions
|
@ -57,6 +57,11 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ContentsJsonParser.Container contentsContainer2 = ContentsJsonParser.parseJsonContents2(contentsJson);
|
||||||
|
if (contentsContainer2 == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final ArrayList<String> listDataHeader = contentsContainer.listDataHeader;
|
final ArrayList<String> listDataHeader = contentsContainer.listDataHeader;
|
||||||
final LinkedHashMap<String, List<String>> listDataChild = contentsContainer.listDataChild;
|
final LinkedHashMap<String, List<String>> listDataChild = contentsContainer.listDataChild;
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,21 @@ public class WikivoyageArticleDialogFragment extends WikivoyageBaseDialogFragmen
|
||||||
"window.location.hash = id;}</script>";
|
"window.location.hash = id;}</script>";
|
||||||
private static final String FOOTER_INNER = "</div></body></html>";
|
private static final String FOOTER_INNER = "</div></body></html>";
|
||||||
|
|
||||||
|
private static final String collapsibleJS = "<script>\n" +
|
||||||
|
"var coll = document.getElementsByTagName(\"H2\");\n" +
|
||||||
|
"var i;\n" +
|
||||||
|
"for (i = 0; i < coll.length; i++) {\n" +
|
||||||
|
" coll[i].addEventListener(\"click\", function() {\n" +
|
||||||
|
" this.classList.toggle(\"active\");\n" +
|
||||||
|
" var content = this.nextElementSibling;\n" +
|
||||||
|
" if (content.style.display === \"block\") {\n" +
|
||||||
|
" content.style.display = \"none\";\n" +
|
||||||
|
" } else {\n" +
|
||||||
|
" content.style.display = \"block\";\n" +
|
||||||
|
" }\n" +
|
||||||
|
" });\n" +
|
||||||
|
"}</script>";
|
||||||
|
|
||||||
private long cityId = NO_VALUE;
|
private long cityId = NO_VALUE;
|
||||||
private ArrayList<String> langs;
|
private ArrayList<String> langs;
|
||||||
private String selectedLang;
|
private String selectedLang;
|
||||||
|
|
|
@ -17,6 +17,7 @@ public class ContentsJsonParser {
|
||||||
LinkedHashMap<String, String> map = new LinkedHashMap<>();
|
LinkedHashMap<String, String> map = new LinkedHashMap<>();
|
||||||
ArrayList<String> listDataHeader = new ArrayList<>();
|
ArrayList<String> listDataHeader = new ArrayList<>();
|
||||||
LinkedHashMap<String, List<String>> listDataChild = new LinkedHashMap<>();
|
LinkedHashMap<String, List<String>> listDataChild = new LinkedHashMap<>();
|
||||||
|
Container headers = new Container();
|
||||||
|
|
||||||
JSONObject reader;
|
JSONObject reader;
|
||||||
try {
|
try {
|
||||||
|
@ -26,26 +27,49 @@ public class ContentsJsonParser {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<String> secondLevel = null;
|
List<String> secondLevel = null;
|
||||||
JSONArray jArray = reader.names();
|
JSONObject jArray = null;
|
||||||
|
try {
|
||||||
|
jArray = reader.getJSONObject("headers");
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < jArray.length(); i++) {
|
for (int i = 0; i < jArray.length(); i++) {
|
||||||
try {
|
try {
|
||||||
JSONArray contacts = reader.getJSONArray(reader.names().getString(i));
|
|
||||||
String link = contacts.getString(1);
|
|
||||||
|
|
||||||
map.put(reader.names().getString(i), link);
|
String link = "";
|
||||||
|
JSONObject header = jArray.getJSONObject(jArray.names().getString(i));
|
||||||
|
link = header.getString("link");
|
||||||
|
map.put(jArray.names().getString(i), link);
|
||||||
|
|
||||||
int level = contacts.getInt(0);
|
|
||||||
|
|
||||||
if (level == 2) {
|
Container firstLvl = new Container(jArray.names().getString(i), link);
|
||||||
listDataHeader.add(reader.names().getString(i));
|
headers.childs.add(firstLvl);
|
||||||
|
firstLvl.setParent(headers);
|
||||||
|
|
||||||
|
|
||||||
|
listDataHeader.add(jArray.names().getString(i));
|
||||||
|
JSONArray contacts = header.getJSONArray("subheaders");
|
||||||
|
|
||||||
|
if (contacts.length() > 1) {
|
||||||
secondLevel = new ArrayList<>();
|
secondLevel = new ArrayList<>();
|
||||||
}
|
}
|
||||||
if (level == 3) {
|
for (int j = 0; j < contacts.length(); j++) {
|
||||||
|
String names = header.names().toString();
|
||||||
|
JSONObject subheader = contacts.getJSONObject(j);
|
||||||
|
JSONObject subheader2 = subheader.getJSONObject(subheader.names().getString(0));
|
||||||
if (secondLevel == null) {
|
if (secondLevel == null) {
|
||||||
secondLevel = new ArrayList<>();
|
secondLevel = new ArrayList<>();
|
||||||
}
|
}
|
||||||
secondLevel.add(reader.names().getString(i));
|
secondLevel.add(subheader.names().getString(0));
|
||||||
listDataChild.put(listDataHeader.get(listDataHeader.size() - 1), secondLevel);
|
listDataChild.put(listDataHeader.get(listDataHeader.size() - 1), secondLevel);
|
||||||
|
link = subheader2.getString("link");
|
||||||
|
map.put(subheader.names().getString(0), link);
|
||||||
|
|
||||||
|
Container secondLvl = new Container(subheader.names().getString(0), link);
|
||||||
|
firstLvl.childs.add(secondLvl);
|
||||||
|
secondLvl.setParent(headers);
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -54,6 +78,64 @@ public class ContentsJsonParser {
|
||||||
return new ContentsContainer(map, listDataHeader, listDataChild);
|
return new ContentsContainer(map, listDataHeader, listDataChild);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static Container parseJsonContents2(String contentsJson) {
|
||||||
|
Container headers = new Container();
|
||||||
|
|
||||||
|
JSONObject reader;
|
||||||
|
try {
|
||||||
|
reader = new JSONObject(contentsJson);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
List<String> secondLevel = null;
|
||||||
|
JSONObject jArray = null;
|
||||||
|
try {
|
||||||
|
jArray = reader.getJSONObject("headers");
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < jArray.length(); i++) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
String link = "";
|
||||||
|
JSONObject header = jArray.getJSONObject(jArray.names().getString(i));
|
||||||
|
link = header.getString("link");
|
||||||
|
|
||||||
|
|
||||||
|
Container firstLvl = new Container(jArray.names().getString(i), link);
|
||||||
|
headers.childs.add(firstLvl);
|
||||||
|
firstLvl.setParent(headers);
|
||||||
|
|
||||||
|
|
||||||
|
JSONArray contacts = header.getJSONArray("subheaders");
|
||||||
|
|
||||||
|
if (contacts.length() > 1) {
|
||||||
|
secondLevel = new ArrayList<>();
|
||||||
|
}
|
||||||
|
for (int j = 0; j < contacts.length(); j++) {
|
||||||
|
JSONObject subheader = contacts.getJSONObject(j);
|
||||||
|
JSONObject subheader2 = subheader.getJSONObject(subheader.names().getString(0));
|
||||||
|
if (secondLevel == null) {
|
||||||
|
secondLevel = new ArrayList<>();
|
||||||
|
}
|
||||||
|
secondLevel.add(subheader.names().getString(0));
|
||||||
|
link = subheader2.getString("link");
|
||||||
|
|
||||||
|
Container secondLvl = new Container(subheader.names().getString(0), link);
|
||||||
|
firstLvl.childs.add(secondLvl);
|
||||||
|
secondLvl.setParent(headers);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
public static class ContentsContainer {
|
public static class ContentsContainer {
|
||||||
|
|
||||||
public LinkedHashMap<String, String> map;
|
public LinkedHashMap<String, String> map;
|
||||||
|
@ -68,4 +150,52 @@ public class ContentsJsonParser {
|
||||||
this.listDataChild = listChildData;
|
this.listDataChild = listChildData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class Container {
|
||||||
|
String name;
|
||||||
|
String link;
|
||||||
|
ArrayList<Container> childs = new ArrayList<>();
|
||||||
|
Container parent;
|
||||||
|
|
||||||
|
public ArrayList<Container> getChilds() {
|
||||||
|
return childs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChilds(ArrayList<Container> childs) {
|
||||||
|
this.childs = childs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLink() {
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLink(String link) {
|
||||||
|
this.link = link;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Container getParent() {
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParent(Container parent) {
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Container(String name, String link) {
|
||||||
|
this.name = name;
|
||||||
|
this.link = link;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Container() {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue