Как мне отобразить данные моего API JSON в представлении recycler

#java #android #database #api

#java #Android #База данных #API

Вопрос:

Я только что завершил перенос данных моего API в JSONObject, теперь я пытаюсь визуализировать данные в представлении recycler. Как бы я поступил, выполнив это, вот мой код:

Там, где в комментарии сказано, что они передаются адаптеру, я предполагаю, что именно туда будет отправлено представление recycler. Извините за спагетти-код, я очень новичок в JAVA и объектно-ориентирован. Буду признателен за любую помощь.

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mCompanyInput = findViewById(R.id.companyInput);
        log = findViewById(R.id.log);
        mDescriptionText = findViewById(R.id.descriptionText);
        mTitleText = findViewById(R.id.titleText);

        save = findViewById(R.id.searchButton);
        realm = Realm.getDefaultInstance();
        save.setOnClickListener(this);

    }

    public void onClick(View view) {

        //pull string from search query
        String companyInput = mCompanyInput.getText().toString();


        okHttpClient = new OkHttpClient();

        request = new Request.Builder().url(url   companyInput).header("Authorization", "k6DNRbTp-AnQWn51JBz5VuPiTl8jv4_etdzoMyhf").method("GET", null).build();
        Log.d(TAG, "onClick:"   url);

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.i(TAG, e.getMessage());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                try {
                    JSONObject object = new JSONObject (response.body().string());

                    JSONArray array = object.getJSONArray("items");

//                    object.get("start_index");

                    Log.i(TAG, "onResponse:"  array.length());

                    for (int i = 0; i < array.length(); i  ){
                        JSONObject company = (JSONObject) array.get(i);
                        Log.i(TAG, "onResponse: "   company);

                    }
//pass to adapter here than feed to recycler view





                } catch (JSONException e) {
                    e.printStackTrace();

                }





            }
        });

//        writeToDB(mCompanyInput.getText().toString().trim(), (mDescriptionText.getText().toString().trim()));
        showData();
    }

    public void showData() {
        RealmResults<Company> guests = realm.where(Company.class).findAll();

// Use an iterator to invite all guests
        String op = "";

        for (Company guest : guests) {
            op  = guest.getName();
            op  = guest.getAppointments();

        }

        log.setText(op);
    }

    public void writeToDB(final String mTitleText, final String mDescriptionText) {

        realm.executeTransactionAsync(new Realm.Transaction() {
            @Override
            public void execute(Realm bgRealm) {
                Company user = new Company(mTitleText, mDescriptionText);
                bgRealm.insert(user);

            }
        }, new Realm.Transaction.OnSuccess() {
            @Override
            public void onSuccess() {

                // Transaction was a success.
                Log.v("Database", "Data Inserted");
            }
        }, new Realm.Transaction.OnError() {
            @Override
            public void onError(Throwable error) {
                // Transaction failed and was automatically canceled.
                Log.e("Database", error.getMessage());
            }
        });

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        realm.close();
    }
  

Вот что мой API выдает в журнале cat.
D / MainActivity: onClick:https://api.companieshouse.gov.uk/search/officers?q =
I / MainActivity: onResponse: 1
I / MainActivity: onResponse: {«ссылки»:{«self»: «/officers/gPAqCDv52XAYJON4Z9SHCQOG-hU/ встречи»},»description»: «Общее количество встреч 1», «address_snippet»: «Олд-Глостер-стрит, 27, Лондон, Великобритания, WC1N 3AX»,»description_identifiers»:[«appointment-count»],»appointment_count»:1,»snippet»:»»,»kind»:»searchresults#officer»,»address»:{«country»:» WC1N 3AX», «address_line_1»: «Олд-Глостер-стрит», «помещения»: «27», «местность»: «Лондон»}, «совпадения»:{«сниппет»:[], «заголовок»: [1,8]}, «заголовок»: «FACEBOOK ADS S.R.L.»}

Ответ №1:

Возможно, вам потребуется, прежде всего, создать класс POJO для анализа ответа с сервера. Вы должны реализовать пользовательский адаптер для вашего представления Recycler.

Как правило, вы инициализируете свой адаптер и представление recycler в onCreate, и когда данные поступают с сервера, вы просто обновляете содержимое адаптера.

Существует множество руководств о том, как начать работу с представлением Recycler, пожалуйста, ознакомьтесь с этим, этим и этим.