В методе "onCreateView" массива значений "idlists" я не могу добавить набор значений метода "getOrderDetails", который хранил "idlists".
В методе "onCreateView ()"Я по умолчанию установил значение idlists,
ArrayList idlists = new ArrayList();
idlists.add("2008");
idlists.add("2009");
idlists.add("2010");
, но я хочу обновить ArrayList "idlists", когда вызов API "getOrderDetails ()" и его массив значений "idlists" должен быть обновлен в "onCeatedView».
for (int index = 0; index < salArry.size(); index++)
for (int indey = 0; indey < salArry.size(); indey++)
idlists.add(new Entry(salArry.get(index).getLine_items().get(indey).getProduct_id(), index));
На самом деле, я хочу добавить arraylist из API-метода getOrderDetails (), который содержится в "idlists".
public class SalesByProductPieFragment extends Fragment {
public static SalesByProductPieFragment newInstance(){
SalesByProductPieFragment salesByProductPieFragment = new SalesByProductPieFragment();
return salesByProductPieFragment;
}
String url = "https://shop.btownmedia.com/wp-json/wc/v2/";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
new SalesByProductPieFragment.FetchItemsTask().execute();
}
PieChart pieChart;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_sales_by_product_pie, container, false);
pieChart =(PieChart) rootView.findViewById(R.id.piechart);
ArrayList NoOfEmp = new ArrayList();
NoOfEmp.add(new Entry(945f, 0));
NoOfEmp.add(new Entry(1040f, 1));
NoOfEmp.add(new Entry(1133f, 2));
PieDataSet dataSet = new PieDataSet(NoOfEmp, "Number Of Employees");
ArrayList idlists = new ArrayList();
idlists.add("2008");
idlists.add("2009");
idlists.add("2010");
PieData data = new PieData(idlists, dataSet);
pieChart.setData(data);
dataSet.setColors(ColorTemplate.COLORFUL_COLORS);
dataSet.setValueTextSize(18f);
//pieChart.animateXY(5000, 5000);
return rootView;
}
ArrayList idlists = null;
private class FetchItemsTask extends AsyncTask<Void,Void,String> {
@Override
protected String doInBackground(Void... params) {
getOrderDetails();
return "";
}
protected void onPostExecute() {
getOrderDetails();
}
}
ArrayList<Order> salArry = new ArrayList();
ArrayList<Order> hosArry = new ArrayList();
private void getOrderDetails() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitArrayAPI service = retrofit.create(RetrofitArrayAPI.class);
Call<List<Order>> call = service.getOrderDetails();
call.enqueue(new Callback<List<Order>>() {
@Override
public void onResponse(Response<List<Order>> response, Retrofit retrofit) {
try {
List<Order> ProductData = response.body();
for (int i = 0; i < ProductData.size(); i++) {
//displaying the string array into gridView
Order b = new Order();
b.setId(ProductData.get(i).getId());
b.setStatus(ProductData.get(i).getStatus());
b.setDate_completed(ProductData.get(i).getDate_completed());
hosArry.add(b);
}
for (int i =0; i<hosArry.size(); i++){
if(hosArry.get(i).getStatus().contains("completed"))
{
Order b = new Order();
b.setId(hosArry.get(i).getId());
b.setDate_completed(hosArry.get(i).getDate_completed());
b.setLine_items(hosArry.get(i).getLine_items());
salArry.add(b);
}
}
for (int index = 0; index < salArry.size(); index++)
for (int indey = 0; indey < salArry.size(); indey++)
idlists.add(new Entry(salArry.get(index).getLine_items().get(indey).getProduct_id(), index));
} catch (Exception e) {
Log.d("onResponse", "There is an error");
e.printStackTrace();
}
}
@Override public void onFailure(Throwable t) {
Log.d("onFailure", t.toString());
}
});
} }