RecyclerView adapter connection error: no adapter attached
RecyclerView adapter connection error: no adapter attached
我想在片段中使用 RecyclerView,但无法连接适配器。当我 运行 它时,它失败了,我得到这个错误
E/RecyclerView:没有连接适配器;跳过布局
Fragment
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);
}}
正如您现在所拥有的那样,您正在重新扩充布局,并且 return 尚未为 RecyclerView 设置适配器的布局。只是 return 您已经充气并用于设置 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;
}
你应该 return 查看,你膨胀布局并获得 recyclerview,你不应该膨胀两次。只是 return 第一个膨胀视图
我想在片段中使用 RecyclerView,但无法连接适配器。当我 运行 它时,它失败了,我得到这个错误
E/RecyclerView:没有连接适配器;跳过布局
Fragment
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);
}}
正如您现在所拥有的那样,您正在重新扩充布局,并且 return 尚未为 RecyclerView 设置适配器的布局。只是 return 您已经充气并用于设置 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;
}