remove setters and collections
This commit is contained in:
parent
1416120be5
commit
273f9d5756
2 changed files with 40 additions and 83 deletions
|
@ -21,9 +21,6 @@ import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem;
|
|||
import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem;
|
||||
import net.osmand.plus.wikivoyage.data.WikivoyageJsonParser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFragment {
|
||||
|
||||
|
@ -36,9 +33,6 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
|
||||
private ExpandableListView expListView;
|
||||
|
||||
private LinkedHashMap<String, String> map;
|
||||
private String link;
|
||||
|
||||
@Override
|
||||
public void createMenuItems(Bundle savedInstanceState) {
|
||||
Bundle args = getArguments();
|
||||
|
@ -51,36 +45,15 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
return;
|
||||
}
|
||||
|
||||
WikivoyageJsonParser.ContentsItem contentsItem = WikivoyageJsonParser.parseJsonContents(contentsJson);
|
||||
if (contentsItem == null) {
|
||||
final WikivoyageJsonParser.WikivoyageContentItem wikivoyageContentItem = WikivoyageJsonParser.parseJsonContents(contentsJson);
|
||||
if (wikivoyageContentItem == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final ArrayList<String> listDataHeader = new ArrayList<String>();
|
||||
final LinkedHashMap<String, List<String>> listDataChild = new LinkedHashMap<String, List<String>>();
|
||||
map = new LinkedHashMap<>();
|
||||
|
||||
for (int i = 0; i < contentsItem.getChildItems().size(); i++) {
|
||||
WikivoyageJsonParser.ContentsItem Header = contentsItem.getChildItems().get(i);
|
||||
listDataHeader.add(Header.getName());
|
||||
map.put(Header.getName(), Header.getLink());
|
||||
|
||||
if (Header.getChildItems() != null && !Header.getChildItems().isEmpty()) {
|
||||
ArrayList<String> subHeaders = new ArrayList<>();
|
||||
|
||||
for (int j = 0; j < Header.getChildItems().size(); j++) {
|
||||
WikivoyageJsonParser.ContentsItem subHeaderItem = Header.getChildItems().get(j);
|
||||
subHeaders.add(subHeaderItem.getName());
|
||||
map.put(subHeaderItem.getName(), subHeaderItem.getLink());
|
||||
}
|
||||
listDataChild.put(Header.getName(), subHeaders);
|
||||
}
|
||||
}
|
||||
|
||||
items.add(new TitleItem(getString(R.string.shared_string_contents)));
|
||||
|
||||
expListView = new ExpandableListView(getContext());
|
||||
ExpandableListAdapter listAdapter = new ExpandableListAdapter(getContext(), listDataHeader, listDataChild);
|
||||
ExpandableListAdapter listAdapter = new ExpandableListAdapter(getContext(), wikivoyageContentItem);
|
||||
|
||||
expListView.setAdapter(listAdapter);
|
||||
Drawable transparent = ContextCompat.getDrawable(getContext(), R.color.color_transparent);
|
||||
|
@ -95,9 +68,9 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
|
||||
@Override
|
||||
public boolean onChildClick(ExpandableListView parent, View v,
|
||||
int groupPosition, int childPosition, long id) {
|
||||
link = map.get(listDataChild.get(listDataHeader.get(groupPosition)).get(childPosition));
|
||||
sendResult();
|
||||
int groupPosition, int childPosition, long id) {
|
||||
String link = wikivoyageContentItem.getSubItems().get(groupPosition).getSubItems().get(childPosition).getLink();
|
||||
sendResult(link);
|
||||
dismiss();
|
||||
return false;
|
||||
}
|
||||
|
@ -105,8 +78,8 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
expListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
|
||||
@Override
|
||||
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
|
||||
link = map.get(listDataHeader.get(groupPosition));
|
||||
sendResult();
|
||||
String link = wikivoyageContentItem.getSubItems().get(groupPosition).getLink();
|
||||
sendResult(link);
|
||||
dismiss();
|
||||
return false;
|
||||
}
|
||||
|
@ -117,7 +90,7 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
items.add(new SimpleBottomSheetItem.Builder().setCustomView(container).create());
|
||||
}
|
||||
|
||||
private void sendResult() {
|
||||
private void sendResult(String link) {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(CONTENTS_LINK_KEY, link);
|
||||
Fragment fragment = getTargetFragment();
|
||||
|
@ -145,17 +118,14 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
|
||||
private Context context;
|
||||
|
||||
private List<String> listDataHeader;
|
||||
private LinkedHashMap<String, List<String>> listDataChild;
|
||||
private WikivoyageJsonParser.WikivoyageContentItem wikivoyageContentItem;
|
||||
|
||||
private Drawable itemGroupIcon;
|
||||
private Drawable itemChildIcon;
|
||||
|
||||
ExpandableListAdapter(Context context, List<String> listDataHeader,
|
||||
LinkedHashMap<String, List<String>> listChildData) {
|
||||
ExpandableListAdapter(Context context, WikivoyageJsonParser.WikivoyageContentItem wikivoyageContentItem) {
|
||||
this.context = context;
|
||||
this.listDataHeader = listDataHeader;
|
||||
this.listDataChild = listChildData;
|
||||
this.wikivoyageContentItem = wikivoyageContentItem;
|
||||
|
||||
itemGroupIcon = getIcon(R.drawable.ic_action_list_header, nightMode
|
||||
? R.color.wikivoyage_contents_parent_icon_dark : R.color.wikivoyage_contents_parent_icon_light);
|
||||
|
@ -166,7 +136,7 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
|
||||
@Override
|
||||
public Object getChild(int groupPosition, int childPosititon) {
|
||||
return listDataChild.get(listDataHeader.get(groupPosition)).get(childPosititon);
|
||||
return wikivoyageContentItem.getSubItems().get(groupPosition).getSubItems().get(childPosititon).getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -191,7 +161,7 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
|
||||
convertView.findViewById(R.id.upper_row_divider).setVisibility(View.GONE);
|
||||
txtListChild.setTypeface(null);
|
||||
if (childPosition == listDataChild.get(listDataHeader.get(groupPosition)).size() - 1) {
|
||||
if (childPosition == wikivoyageContentItem.getSubItems().get(groupPosition).getSubItems().size() - 1) {
|
||||
convertView.findViewById(R.id.bottom_row_divider).setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
convertView.findViewById(R.id.bottom_row_divider).setVisibility(View.GONE);
|
||||
|
@ -202,18 +172,18 @@ public class WikivoyageArticleContentsFragment extends MenuBottomSheetDialogFrag
|
|||
|
||||
@Override
|
||||
public int getChildrenCount(int groupPosition) {
|
||||
List<String> list = listDataChild.get(listDataHeader.get(groupPosition));
|
||||
return list == null ? 0 : list.size();
|
||||
return wikivoyageContentItem.getSubItems().get(groupPosition).getSubItems().size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGroup(int groupPosition) {
|
||||
return this.listDataHeader.get(groupPosition);
|
||||
return wikivoyageContentItem.getSubItems().get(groupPosition).getName();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGroupCount() {
|
||||
return this.listDataHeader.size();
|
||||
return wikivoyageContentItem.getSubItems().size();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -16,7 +16,7 @@ public class WikivoyageJsonParser {
|
|||
private static final String LINK = "link";
|
||||
|
||||
@Nullable
|
||||
public static ContentsItem parseJsonContents(String contentsJson) {
|
||||
public static WikivoyageContentItem parseJsonContents(String contentsJson) {
|
||||
|
||||
JSONObject jArray;
|
||||
JSONObject reader;
|
||||
|
@ -29,82 +29,69 @@ public class WikivoyageJsonParser {
|
|||
return null;
|
||||
}
|
||||
|
||||
ContentsItem topContentsItem = new ContentsItem(HEADERS, null);
|
||||
WikivoyageContentItem topWikivoyageContentItem = new WikivoyageContentItem(HEADERS, null);
|
||||
for (int i = 0; i < jArray.length(); i++) {
|
||||
try {
|
||||
String link = "";
|
||||
JSONObject jsonHeader = jArray.getJSONObject(jArray.names().getString(i));
|
||||
link = jsonHeader.getString(LINK);
|
||||
ContentsItem contentsHeaderItem = new ContentsItem(jArray.names().getString(i), link);
|
||||
topContentsItem.childItems.add(contentsHeaderItem);
|
||||
contentsHeaderItem.setParent(topContentsItem);
|
||||
WikivoyageContentItem contentHeaderItem = new WikivoyageContentItem(jArray.names().getString(i), link, topWikivoyageContentItem);
|
||||
topWikivoyageContentItem.subItems.add(contentHeaderItem);
|
||||
|
||||
JSONArray jsonSubheaders = jsonHeader.getJSONArray(SUBHEADERS);
|
||||
List<String> subheaderNames = null;
|
||||
for (int j = 0; j < jsonSubheaders.length(); j++) {
|
||||
JSONObject jsonSubheader = jsonSubheaders.getJSONObject(j);
|
||||
JSONObject jsonSubheaderLink = jsonSubheader.getJSONObject(jsonSubheader.names().getString(0));
|
||||
JSONObject jsonSubheaderLink = jsonSubheader.getJSONObject(jsonSubheader.keys().next());
|
||||
if (subheaderNames == null) {
|
||||
subheaderNames = new ArrayList<>();
|
||||
}
|
||||
subheaderNames.add(jsonSubheader.names().getString(0));
|
||||
subheaderNames.add(jsonSubheader.keys().next());
|
||||
link = jsonSubheaderLink.getString(LINK);
|
||||
|
||||
ContentsItem contentsSubHeaderContainer = new ContentsItem(jsonSubheader.names().getString(0), link);
|
||||
contentsHeaderItem.childItems.add(contentsSubHeaderContainer);
|
||||
contentsSubHeaderContainer.setParent(topContentsItem);
|
||||
WikivoyageContentItem contentsSubHeaderContainer = new WikivoyageContentItem(jsonSubheader.names().getString(0), link, contentHeaderItem);
|
||||
contentHeaderItem.subItems.add(contentsSubHeaderContainer);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return topContentsItem;
|
||||
return topWikivoyageContentItem;
|
||||
}
|
||||
|
||||
public static class ContentsItem {
|
||||
public static class WikivoyageContentItem {
|
||||
|
||||
private ArrayList<ContentsItem> childItems = new ArrayList<>();
|
||||
private ContentsItem parent;
|
||||
|
||||
private String name;
|
||||
private String link;
|
||||
private String name;
|
||||
private ArrayList<WikivoyageContentItem> subItems = new ArrayList<>();
|
||||
private WikivoyageContentItem parent;
|
||||
|
||||
public ContentsItem(String name, String link) {
|
||||
private WikivoyageContentItem(String name, String link) {
|
||||
this.name = name;
|
||||
this.link = link;
|
||||
}
|
||||
|
||||
public ArrayList<ContentsItem> getChildItems() {
|
||||
return childItems;
|
||||
private WikivoyageContentItem(String name, String link, WikivoyageContentItem parent) {
|
||||
this.parent = parent;
|
||||
this.name = name;
|
||||
this.link = link;
|
||||
}
|
||||
|
||||
public void setChildItems(ArrayList<ContentsItem> childItems) {
|
||||
this.childItems = childItems;
|
||||
}
|
||||
|
||||
|
||||
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 ContentsItem getParent() {
|
||||
public WikivoyageContentItem getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public void setParent(ContentsItem parent) {
|
||||
this.parent = parent;
|
||||
public ArrayList<WikivoyageContentItem> getSubItems() {
|
||||
return subItems;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue