API должен возвращать данные в формате JSON, но не показываться в макете - PullRequest
2 голосов
/ 05 ноября 2019

Я пытаюсь передать свой ответ json классу адаптера, я получаю ответ от остальных API, но массив объектов json не передается в класс адаптера после того, как класс обработчика модификации преобразует ответ json в массив объектов. Я не получаю каких-либо ошибок журнала или предупреждений, но когда я пытаюсь использовать этот актив в моем приложении для Android, я не получаю никаких результатов.

public class HistoryActivity extends AppBaseActivity {

    @BindView(R.id.history_header)
    RelativeLayout history_header;

    @BindView(R.id.history_list)
    ListView history_list;

    @BindView(R.id.no_history_view)
    LinearLayout no_history_view;

    @BindView(R.id.hdr_back)
    TextView hdr_back;

    private String address;
    private String category;
    private String distance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_history);

        unbinder= ButterKnife.bind(this);
        backBtnSet();

        updateHeader();
        Intent intent=getIntent();

        if(intent!=null && intent.hasExtra("mid")){
            String mId=intent.getStringExtra("mid");

            address=intent.getStringExtra("address");
            category=intent.getStringExtra("category");
            distance=intent.getStringExtra("distance");

            fetchHistory(mId);
        }else {
            activityFinish();
        }
    }

    private void backBtnSet() {

        final int height= (int) getResources().getDimension(R.dimen.dp_24);
        hdr_back.getViewTreeObserver()
                .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
                        Drawable img = getBaseContext().getResources().getDrawable(
                                R.drawable.ic_backarrow);
                        img.setBounds(0, 0, height,
                                height);
                        hdr_back.setCompoundDrawables(img, null, null, null);
                        hdr_back.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    }
                });
    }

    private void updateHeader() {
        TextView hView= history_header.findViewById(R.id.hdr_title);
        hView.setText(getString(R.string.history_small));
    }

    private void fetchHistory(String mId) {
        JsonObject jObject=ParamConvertor.getCustomerHistory(userInfo.getId(),
                userInfo.getAccessKey(),mId);

        Call<ArrayList<HistoryCustomer>> call=apiService.getCustomerHistory(jObject);
        call.enqueue(new RetrofitHandlerFull<ArrayList<HistoryCustomer>>(this,
                networkHandler,1));
        AppLogger.printPostBodyCall(call);
    }
//Problem persists from here  
    private INetworkHandler<ArrayList<HistoryCustomer>> networkHandler
            = new INetworkHandler<ArrayList<HistoryCustomer>>() {

        @Override
        public void onResponse(ArrayList<HistoryCustomer> data, String msg, int num) {
            if(data!=null && !data.isEmpty()){
                updateList(data);
                dataPresent(true);

            }else{
                dataPresent(false);
            }
        }

        @Override
        public void onFailure(String msg, int error) {
            dataPresent(false);
        }
    };

    private void updateList(ArrayList<HistoryCustomer> data){
        HistoryAdapter adapter=new HistoryAdapter(this,data,
                address,category);

        history_list.setAdapter(adapter);
    }


    private void dataPresent(boolean isPresent){
        if(isPresent){
            no_history_view.setVisibility(View.GONE);
            history_list.setVisibility(View.VISIBLE);
        }else{
            no_history_view.setVisibility(View.VISIBLE);
            history_list.setVisibility(View.GONE);
        }
    }


    @OnClick(R.id.hdr_back)
    void onCLicks(View view){

        switch (view.getId()){

            case R.id.hdr_back:
                activityFinish();
                break;
        }
    }
}

1 Ответ

0 голосов
/ 06 ноября 2019

Что касается вашего кода, мне кажется, что вы можете проверить конечную точку, которую вы вызываете, возможно, она возвращает нулевой или пустой объект.

...