Адаптер не подключен; ошибка макета с пропуском (с использованием JSON)

Я все сделал правильно, но мой logcat все еще показывает эту ошибку. Адаптер не подключен; пропуск макета

Я попытался сначала установить пустой адаптер внутри onCreate() и adapter.notifyDataSetChanged(); после того, как я получу данные в свой praseJSON(), но все равно не повезло!

Все в файле адаптера Recycler также настроено в соответствии со всеми исправлениями, найденными в Интернете.


private static final String TAG = "Nearby";
    private RecyclerView mRecyclerView;
    private NearbyAdapter mNearbyAdapter;
    private ArrayList<NearbyItem> mNearbyList;
    private RequestQueue mRequestQueue;
    private LocationManager locationManager;
    private String apiURL = "";

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nearby);
        mRecyclerView = findViewById(R.id.recyclerViewNearby);
        mRecyclerView.setAdapter(mNearbyAdapter);
        mNearbyAdapter = new NearbyAdapter(NearbyActivity.this, mNearbyList);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mNearbyList = new ArrayList<>();
        mRequestQueue = Volley.newRequestQueue(this);
        parseJSON();

        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                        != PackageManager.PERMISSION_GRANTED)
        {
            return;
        }

        Location location = locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER);
        onLocationChanged(location);
    }


private void parseJSON()
    {
        Log.d(TAG, "Starting parseJSON()"+TAG);
        String url = apiURL;
        Log.d(TAG,"URL: " + url);

        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>()
                {
                    @Override
                    public void onResponse(JSONObject response)
                    {
                        try
                        {
                            JSONArray jsonArray = response.getJSONArray("member");
                            for (int i = 0; i < jsonArray.length(); i++)
                            {
                                JSONObject member = jsonArray.getJSONObject(i);
                                String nName = "";
                                String nType = "";
                                String nDesc = "";
                                if (member.has("name")){
                                    nName = member.getString("name");
                                    Log.d(TAG, "Name is: " + nName);
                                }
                                if (member.has("type")) {
                                    nType = member.getString("type");
                                    Log.d(TAG, "Type is: " + nType);
                                }
                                if (member.has("description")){
                                    nDesc = member.getString("description");
                                    Log.d(TAG, "Desc is: " + nDesc);
                                }
                                else
                                {
                                    nDesc += nName;
                                    Log.d(TAG, "Desc is: " + nDesc);
                                }

                                if (nType.contains("bus_stop")){
                                    nType = "Bus Stop";

                                }
                                else if (nType.contains("train_station"))
                                {
                                    nType = "Train Station";
                                }
                                mNearbyList.add(new NearbyItem(nName, nType, nDesc));
                            }
                            mNearbyAdapter.notifyDataSetChanged();
                            mNearbyAdapter = new NearbyAdapter(NearbyActivity.this, mNearbyList);
                            mRecyclerView.setAdapter(mNearbyAdapter);

                        }
                        catch (JSONException e)
                        {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener()
        {
            @Override
            public void onErrorResponse(VolleyError error)
            {
                error.printStackTrace();
            }
        });
        mRequestQueue.add(request);
    }

Дублирование stackoverflow.com/q/29141729/6296561

Zoe stands with Ukraine 18.04.2019 19:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в том, что вы установили адаптер mNearbyAdapterдо для создания объекта NearbyAdapter.

protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nearby);
        mRecyclerView = findViewById(R.id.recyclerViewNearby);

        // you passed mNearbyAdapter here
        mRecyclerView.setAdapter(mNearbyAdapter);  

        // but you created the object for it here
        mNearbyAdapter = new NearbyAdapter(NearbyActivity.this, mNearbyList);
        ...

Чтобы исправить это, сначала создайте объект для своего адаптера, а затем вызовите setAdapter(mNearbyAdapter).

Другие вопросы по теме