为什么在RecyclerView中使用setAdapter NullPointerException

问题描述 投票:-2回答:2

我试图弄乱RecyclerView,每当尝试运行它时,我的应用程序立即崩溃。它为我提供了NullPointerException,用于尝试从androidx.recyclerview.widget.RecyclerView.setAdapter访问方法。错误:

java.lang.NullPointerException: Attempt to invoke virtual method '' on a null object reference.

content_card_demo.xml:

 <androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:cardBackgroundColor="@android:color/transparent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:listitem="@layout/recycler_view_item" />

GenelFragment:

public class GenelFragment  extends Fragment {

RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
RecyclerView.Adapter adapter;

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override

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

    View root = inflater.inflate(R.layout.fragment_genel, container, false);
    Toolbar toolbar = (Toolbar) root.findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    RecyclerView recyclerView = root.findViewById(R.id.recycler_view);

    LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
    recyclerView.setLayoutManager(layoutManager);

    GenelRecyclerAdapter adapter = new GenelRecyclerAdapter();
    recyclerView.setAdapter(adapter);

    return root;
}

private void setSupportActionBar(Toolbar toolbar) {

}

private void setContentView(int fragment_genel) {

}}

GenelRecyclerAdapter:

public class GenelRecyclerAdapter extends 
RecyclerView.Adapter<GenelRecyclerAdapter.ViewHolder>  {

private String[] titles = {"Chapter One",
        "Chapter Two",
        "Chapter Three",
        "Chapter Four",
        "Chapter Five",
        "Chapter Six",
        "Chapter Seven",
        "Chapter Eight"};

private String[] details = {"Item one details",
        "Item two details", "Item three details",
        "Item four details", "Item five details",
        "Item six details", "Item seven details",
        "Item eight details"};

private int[] images = { R.drawable.ic_mi,
        R.drawable.ic_mi,
        R.drawable.ic_mi,
        R.drawable.ic_mi,
        R.drawable.ic_mi,
        R.drawable.ic_mi,
        R.drawable.ic_mi,
        R.drawable.ic_mi };


class ViewHolder extends RecyclerView.ViewHolder {

    public ImageView itemImage;
    public TextView itemTitle;
    public TextView itemDetail;

    public ViewHolder(View itemView) {
        super(itemView);
        itemImage =
                (ImageView)itemView.findViewById(R.id.item_image);
        itemTitle =
                (TextView)itemView.findViewById(R.id.item_title);
        itemDetail =
                (TextView)itemView.findViewById(R.id.item_detail);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                int position = getAdapterPosition();

                Snackbar.make(v, "Click detected on item " + position,
                        Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }
}
@NonNull
@Override
public GenelRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.fragment_genel, viewGroup, false);
    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
} }

我有那些代码,每次尝试运行它时都发现,但是应用程序未运行,请帮助我确定导致这种问题的原因是什么。有什么建议吗?

android android-recyclerview recycler-adapter
2个回答
0
投票

使用content_card_demo.xml而不是fragment_genelView root = inflater.inflate(R.layout.fragment_genel, container, false);

© www.soinside.com 2019 - 2024. All rights reserved.