Added third level loading.
This commit is contained in:
parent
d1cc2cc3dc
commit
dc01b7960b
@ -33,6 +33,7 @@ import ru.volgorobot.vrcatalog.api.Controller;
|
|||||||
import ru.volgorobot.vrcatalog.api.VRApi;
|
import ru.volgorobot.vrcatalog.api.VRApi;
|
||||||
import ru.volgorobot.vrcatalog.model.FirstLevelModel;
|
import ru.volgorobot.vrcatalog.model.FirstLevelModel;
|
||||||
import ru.volgorobot.vrcatalog.model.SecondLevelModel;
|
import ru.volgorobot.vrcatalog.model.SecondLevelModel;
|
||||||
|
import ru.volgorobot.vrcatalog.model.ThirdLevelModel;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity
|
public class MainActivity extends AppCompatActivity
|
||||||
implements NavigationView.OnNavigationItemSelectedListener, SwipeRefreshLayout.OnRefreshListener {
|
implements NavigationView.OnNavigationItemSelectedListener, SwipeRefreshLayout.OnRefreshListener {
|
||||||
@ -42,6 +43,8 @@ public class MainActivity extends AppCompatActivity
|
|||||||
private List<FirstLevelModel> firstLevelObjects = new ArrayList<>();
|
private List<FirstLevelModel> firstLevelObjects = new ArrayList<>();
|
||||||
private List<TreeNode> firstLevelNodes = new ArrayList<>();
|
private List<TreeNode> firstLevelNodes = new ArrayList<>();
|
||||||
private List<SecondLevelModel> secondLevelObjects = new ArrayList<>();
|
private List<SecondLevelModel> secondLevelObjects = new ArrayList<>();
|
||||||
|
private List<ThirdLevelModel> thirdLevelObjects = new ArrayList<>();
|
||||||
|
|
||||||
private TreeNode rootNode = TreeNode.root();
|
private TreeNode rootNode = TreeNode.root();
|
||||||
private SwipeRefreshLayout mSwipeRefreshLayout;
|
private SwipeRefreshLayout mSwipeRefreshLayout;
|
||||||
|
|
||||||
@ -119,6 +122,9 @@ public class MainActivity extends AppCompatActivity
|
|||||||
firstLevelNodes.add(new TreeNode(firstLevelObjects.get(i).getName()));
|
firstLevelNodes.add(new TreeNode(firstLevelObjects.get(i).getName()));
|
||||||
firstLevelNodes.get(i).setLevel(0);
|
firstLevelNodes.get(i).setLevel(0);
|
||||||
firstLevelNodes.get(i).setChildren(getSecondLevelNodesByParentID(firstLevelObjects.get(i).getID()));
|
firstLevelNodes.get(i).setChildren(getSecondLevelNodesByParentID(firstLevelObjects.get(i).getID()));
|
||||||
|
for (int j = 0; j < firstLevelNodes.get(i).getChildren().size(); j++) {
|
||||||
|
firstLevelNodes.get(i).getChildren().get(j).setChildren(getThirdLevelNodesByParentName((String) firstLevelNodes.get(i).getChildren().get(j).getValue()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootNode.setChildren(firstLevelNodes);
|
rootNode.setChildren(firstLevelNodes);
|
||||||
@ -139,6 +145,21 @@ public class MainActivity extends AppCompatActivity
|
|||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ArrayList<TreeNode> getThirdLevelNodesByParentName(String parentName) {
|
||||||
|
ArrayList<ThirdLevelModel> objects = new ArrayList<>();
|
||||||
|
for (int i = 0; i < thirdLevelObjects.size(); i++) {
|
||||||
|
if(thirdLevelObjects.get(i).getName().equals(parentName)) {
|
||||||
|
objects.add(thirdLevelObjects.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ArrayList<TreeNode> nodes = new ArrayList<>();
|
||||||
|
for (int i = 0; i < objects.size(); i++) {
|
||||||
|
nodes.add(new TreeNode(objects.get(i).getName()));
|
||||||
|
nodes.get(i).setLevel(2);
|
||||||
|
}
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
mSwipeRefreshLayout.setRefreshing(true);
|
mSwipeRefreshLayout.setRefreshing(true);
|
||||||
@ -162,8 +183,10 @@ public class MainActivity extends AppCompatActivity
|
|||||||
for (int i = 0; i < secondLevelObjects.size(); i++) {
|
for (int i = 0; i < secondLevelObjects.size(); i++) {
|
||||||
secondLevelObjects.remove(i);
|
secondLevelObjects.remove(i);
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < thirdLevelObjects.size(); i++) {
|
||||||
|
thirdLevelObjects.remove(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
String baseURL = sharedPreferences.getString("addressOfServer", "");
|
String baseURL = sharedPreferences.getString("addressOfServer", "");
|
||||||
|
|
||||||
@ -172,9 +195,9 @@ public class MainActivity extends AppCompatActivity
|
|||||||
} catch(IllegalStateException e) {
|
} catch(IllegalStateException e) {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
class GetTreeData extends AsyncTask<Void, Void, Void> {
|
class GetTreeData extends AsyncTask<Void, Void, Integer> {
|
||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Integer doInBackground(Void... voids) {
|
||||||
try {
|
try {
|
||||||
Response<List<FirstLevelModel>> firstLevelResponse = vrApi.getFirstLevel().execute();
|
Response<List<FirstLevelModel>> firstLevelResponse = vrApi.getFirstLevel().execute();
|
||||||
if(firstLevelResponse.isSuccessful()) {
|
if(firstLevelResponse.isSuccessful()) {
|
||||||
@ -184,22 +207,39 @@ public class MainActivity extends AppCompatActivity
|
|||||||
if(secondLevelResponse.isSuccessful()) {
|
if(secondLevelResponse.isSuccessful()) {
|
||||||
secondLevelObjects.addAll(secondLevelResponse.body());
|
secondLevelObjects.addAll(secondLevelResponse.body());
|
||||||
} else {
|
} else {
|
||||||
onFailureAnswer(1);
|
return 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < secondLevelObjects.size(); i++) {
|
||||||
|
Response<List<ThirdLevelModel>> thirdLevelResponse = vrApi.getDetails(secondLevelObjects.get(i).getID()).execute();
|
||||||
|
if(thirdLevelResponse.isSuccessful()) {
|
||||||
|
thirdLevelObjects.addAll(thirdLevelResponse.body());
|
||||||
|
} else {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 2;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
onFailureAnswer(0);
|
return 1;
|
||||||
}
|
}
|
||||||
return null;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Integer integer) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(integer);
|
||||||
|
if(integer == 0) {
|
||||||
fillRootNode();
|
fillRootNode();
|
||||||
treeView.refreshTreeView();
|
treeView.refreshTreeView();
|
||||||
mSwipeRefreshLayout.setRefreshing(false);
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
} else if(integer == 1) {
|
||||||
|
onFailureAnswer(1);
|
||||||
|
} else if(integer == 2) {
|
||||||
|
onFailureAnswer(2);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new GetTreeData().execute();
|
new GetTreeData().execute();
|
||||||
@ -207,15 +247,15 @@ public class MainActivity extends AppCompatActivity
|
|||||||
|
|
||||||
private void onFailureAnswer(int errorCode) {
|
private void onFailureAnswer(int errorCode) {
|
||||||
switch (errorCode) {
|
switch (errorCode) {
|
||||||
case 0: {
|
|
||||||
Toast.makeText(MainActivity.this, "Ошибка сети. Проверьте подключение к сети или данные подключения к API!", Toast.LENGTH_LONG).show();
|
|
||||||
Log.e("VRCatalog", "Network Error! Re-check your connection credentials or network settings!");
|
|
||||||
mSwipeRefreshLayout.setRefreshing(false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 1: {
|
case 1: {
|
||||||
|
Toast.makeText(MainActivity.this, "Ошибка сети. Проверьте подключение к сети или данные подключения к API!", Toast.LENGTH_LONG).show();
|
||||||
|
Log.e("VRCatalog", "Network Error! Re-check your connection credentials or network settings! Technical info: null");
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2: {
|
||||||
Toast.makeText(MainActivity.this, "Ответ от сервера неверен! Перепроверьте данные подключения!", Toast.LENGTH_LONG).show();
|
Toast.makeText(MainActivity.this, "Ответ от сервера неверен! Перепроверьте данные подключения!", Toast.LENGTH_LONG).show();
|
||||||
Log.e("VRCatalog", "Answer of server is wrong! Re-check your connection credentials!");
|
Log.e("VRCatalog", "Answer of server is wrong! Re-check your connection credentials! Technical info: null");
|
||||||
mSwipeRefreshLayout.setRefreshing(false);
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import retrofit2.http.GET;
|
|||||||
import retrofit2.http.Query;
|
import retrofit2.http.Query;
|
||||||
import ru.volgorobot.vrcatalog.model.FirstLevelModel;
|
import ru.volgorobot.vrcatalog.model.FirstLevelModel;
|
||||||
import ru.volgorobot.vrcatalog.model.SecondLevelModel;
|
import ru.volgorobot.vrcatalog.model.SecondLevelModel;
|
||||||
|
import ru.volgorobot.vrcatalog.model.ThirdLevelModel;
|
||||||
|
|
||||||
public interface VRApi {
|
public interface VRApi {
|
||||||
|
|
||||||
@ -15,4 +16,7 @@ public interface VRApi {
|
|||||||
|
|
||||||
@GET("/API/Api.php?action=getSecondLevel")
|
@GET("/API/Api.php?action=getSecondLevel")
|
||||||
Call<List<SecondLevelModel>> getSecondLevel(@Query("parentTypeID") int parentTypeID);
|
Call<List<SecondLevelModel>> getSecondLevel(@Query("parentTypeID") int parentTypeID);
|
||||||
|
|
||||||
|
@GET("/API/Api.php?action=getDetailsByParentID")
|
||||||
|
Call<List<ThirdLevelModel>> getDetails(@Query("parentID") int parentID);
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,6 @@ import com.google.gson.annotations.SerializedName;
|
|||||||
|
|
||||||
public class FirstLevelModel {
|
public class FirstLevelModel {
|
||||||
|
|
||||||
@SerializedName("Description")
|
|
||||||
@Expose
|
|
||||||
private Object description;
|
|
||||||
|
|
||||||
@SerializedName("Name")
|
@SerializedName("Name")
|
||||||
@Expose
|
@Expose
|
||||||
private String name;
|
private String name;
|
||||||
@ -18,28 +14,14 @@ public class FirstLevelModel {
|
|||||||
@Expose
|
@Expose
|
||||||
private Integer iD;
|
private Integer iD;
|
||||||
|
|
||||||
@SerializedName("Enable")
|
|
||||||
@Expose
|
|
||||||
private Boolean enable;
|
|
||||||
|
|
||||||
public FirstLevelModel() {
|
public FirstLevelModel() {
|
||||||
// Empty constructor
|
// Empty constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
public FirstLevelModel(Object description, String name, Integer iD, Boolean enable) {
|
public FirstLevelModel(String name, Integer iD) {
|
||||||
super();
|
|
||||||
this.description = description;
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.iD = iD;
|
this.iD = iD;
|
||||||
this.enable = enable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDescription(Object description) {
|
|
||||||
this.description = description;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@ -58,12 +40,4 @@ public class FirstLevelModel {
|
|||||||
this.iD = iD;
|
this.iD = iD;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getEnable() {
|
|
||||||
return enable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEnable(Boolean enable) {
|
|
||||||
this.enable = enable;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -13,10 +13,6 @@ public class SecondLevelModel {
|
|||||||
@Expose
|
@Expose
|
||||||
private Integer detailTypeId;
|
private Integer detailTypeId;
|
||||||
|
|
||||||
@SerializedName("Description")
|
|
||||||
@Expose
|
|
||||||
private Object description;
|
|
||||||
|
|
||||||
@SerializedName("Name")
|
@SerializedName("Name")
|
||||||
@Expose
|
@Expose
|
||||||
private String name;
|
private String name;
|
||||||
@ -25,10 +21,9 @@ public class SecondLevelModel {
|
|||||||
// Empty constructor
|
// Empty constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
public SecondLevelModel(Integer iD, Integer detailTypeId, Object description, String name) {
|
public SecondLevelModel(Integer iD, Integer detailTypeId, String name) {
|
||||||
this.iD = iD;
|
this.iD = iD;
|
||||||
this.detailTypeId = detailTypeId;
|
this.detailTypeId = detailTypeId;
|
||||||
this.description = description;
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,14 +43,6 @@ public class SecondLevelModel {
|
|||||||
this.detailTypeId = detailTypeId;
|
this.detailTypeId = detailTypeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDescription(Object description) {
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
package ru.volgorobot.vrcatalog.model;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.Expose;
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
public class ThirdLevelModel {
|
||||||
|
|
||||||
|
@SerializedName("ID")
|
||||||
|
@Expose
|
||||||
|
private Integer iD;
|
||||||
|
@SerializedName("DetailSubTypeId")
|
||||||
|
@Expose
|
||||||
|
private Integer detailSubTypeId;
|
||||||
|
@SerializedName("Name")
|
||||||
|
@Expose
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No args constructor for use in serialization
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public ThirdLevelModel() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param detailSubTypeId Parent category
|
||||||
|
* @param name Name of detail
|
||||||
|
* @param iD ID of detail
|
||||||
|
*/
|
||||||
|
public ThirdLevelModel(Integer iD, Integer detailSubTypeId, String name) {
|
||||||
|
super();
|
||||||
|
this.iD = iD;
|
||||||
|
this.detailSubTypeId = detailSubTypeId;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getID() {
|
||||||
|
return iD;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setID(Integer iD) {
|
||||||
|
this.iD = iD;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getDetailSubTypeId() {
|
||||||
|
return detailSubTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDetailSubTypeId(Integer detailSubTypeId) {
|
||||||
|
this.detailSubTypeId = detailSubTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user