Как уведомить об изменении данных и создать представление? - PullRequest
0 голосов
/ 25 января 2019

В методе "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());
        }
    });
} }
...