Ошибка подключения адаптера RecyclerView: адаптер не подключен - PullRequest
1 голос
/ 26 октября 2019

Я хочу использовать RecyclerView во фрагменте, но не могу подключить адаптер. когда я запускаю его, происходит сбой, и я получаю эту ошибку

E / RecyclerView: адаптер не подключен;пропускающий макет

Фрагмент

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;

public class Frag1 extends Fragment {
    private RecyclerView rv;
    private CardAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

      View view =inflater.inflate(R.layout.fragment_frag1, container,false);
        rv= (RecyclerView)view.findViewById(R.id.rv);
        rv.setHasFixedSize(true);
        rv.setLayoutManager(new LinearLayoutManager(this.getActivity()));

        ArrayList<String> words = new ArrayList<>() ;
        words.add("x");
        words.add("x");
        words.add("x");
        adapter= new CardAdapter(getActivity(),words);
        rv.setAdapter(adapter);

        return inflater.inflate(R.layout.fragment_frag1, container, false);
    }}

Ответы [ 2 ]

0 голосов
/ 26 октября 2019
Вы должны вернуться к просмотру, вы надуете макет и получите повторное представление, вы не должны раздувать дважды. просто верните первый вид надувания
0 голосов
/ 26 октября 2019

Как вы понимаете, вы заново надуваете макет и возвращаете тот, у которого не установлен адаптер для RecyclerView. Просто верните тот, который вы уже надули и использовали для настройки RecyclerView:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view =inflater.inflate(R.layout.fragment_frag1, container,false);
    rv= (RecyclerView)view.findViewById(R.id.rv);
    rv.setHasFixedSize(true);
    rv.setLayoutManager(new LinearLayoutManager(this.getActivity()));

    ArrayList<String> words = new ArrayList<>() ;
    words.add("x");
    words.add("x");
    words.add("x");
    adapter= new CardAdapter(getActivity(),words);
    rv.setAdapter(adapter);

    // Return the view that you already inflated:
    return view;
}
...