E / RecyclerView:未连接适配器;跳过片段中recyclerview上的布局

问题描述 投票:0回答:1

我有“ E / RecyclerView:未连接适配器;正在跳过布局”的错误消息。我在片段中有recycleView,所以我必须对fragment1.java做错了。

这里是代码。如您所见,我在代码上设置了适配器,但出现此错误。任何帮助,将不胜感激。谢谢。

公共类Fragment1扩展了Fragment {

private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;
private ArrayList<Bible> arrayList;
private FirebaseDatabase database;
private DatabaseReference databaseReference;


@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment1, container, false);

    recyclerView = rootView.findViewById(R.id.recyclerView);
    recyclerView.setHasFixedSize(true);
    //GridLayoutManager layoutManager = new GridLayoutManager(getContext(),  2);
    layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
    recyclerView.setLayoutManager(layoutManager);


    arrayList = new ArrayList<>();

    database = FirebaseDatabase.getInstance();
    databaseReference = database.getReference("Bible");

    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            arrayList.clear();
            for(DataSnapshot snapshot: dataSnapshot.getChildren()){
                Bible bible = snapshot.getValue(Bible.class);
                arrayList.add(bible);

            }
            adapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

            Log.e("fragment1", String.valueOf(databaseError.toException()));//에러문 출력
        }
    });

    adapter = new BibleAdapter(arrayList, getContext());
    recyclerView.setAdapter(adapter);






    return rootView;
}

}

公共类BibleAdapter扩展了RecyclerView.Adapter {

private  ArrayList<Bible> arrayList;
private  Context context;
private OnVerseItemClickListener listener;

public BibleAdapter(ArrayList<Bible> arrayList, Context context) {
    this.arrayList = arrayList;
    this.context = context;
}

public void setOnItemClickListener(OnVerseItemClickListener listener){
    this.listener = listener;
}

@NonNull
@Override
public BibleAdapter.BibleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.verse_item, parent, false);
    BibleViewHolder holder = new BibleViewHolder(view, listener);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull BibleAdapter.BibleViewHolder holder, int position) {
    Glide.with(holder.imageView)
            .load(arrayList.get(position).getImage())
            .into(holder.imageView);
    holder.bibleType.setText(arrayList.get(position).getBibleType());
    holder.keysentance.setText(arrayList.get(position).getKeysentance());
    holder.verse.setText(arrayList.get(position).getVerse());

}

@Override
public int getItemCount() {
    return (arrayList!=null? arrayList.size():0);
}

public class BibleViewHolder extends RecyclerView.ViewHolder{

    ImageView imageView;
    TextView bibleType;
    TextView verse;
    TextView keysentance;

    public BibleViewHolder(@NonNull View itemView, final OnVerseItemClickListener listener) {
        super(itemView);
        this.imageView = itemView.findViewById(R.id.imageView);
        this.bibleType = itemView.findViewById(R.id.bibleType);
        this.keysentance = itemView.findViewById(R.id.keysentance);
        this.verse = itemView.findViewById(R.id.verse);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = getAdapterPosition();
                if(listener != null){
                    listener.onItemClick(BibleViewHolder.this, v, position);
                }
            }
        });
    }
}

}

android android-recyclerview fragment
1个回答
0
投票

在onCreateView()替换中

 ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment1, container, false);

with

 View rootView = inflater.inflate(R.layout.fragment1, container, false);
© www.soinside.com 2019 - 2024. All rights reserved.