尝试在我的Adapter类中的空对象引用上调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)'[重复]

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

此问题已经在这里有了答案:

我在编码中遇到这些错误

尝试在null对象引用onBindViewHolder(BrandAdapter.java:67)上调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)'和BrandAdapter.onBindViewHolder(BrandAdapter.java:34)。

我不太确定到底出了什么问题,因为我非常关注本教程。而且我的数据库不为空。

包含孩子。

这是我的适配器类

public class BrandAdapter extends RecyclerView.Adapter<BrandAdapter.MyViewHolder> {

    private Context context;

    List<String> key;


    ArrayList<Brand> brandList;

    public BrandAdapter(ArrayList<Brand> brandList) {
        this.brandList = brandList;
    }


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.brand_list, viewGroup, false);

        context = viewGroup.getContext();

        return new BrandAdapter.MyViewHolder(view);
    }

    public BrandAdapter(Context c) {
        this.context = c;

    }


    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {

        myViewHolder.brand_name.setText(brandList.get(i).getBrand_name());
        Picasso.with(context).load(brandList.get(i).getBrand_image()).into(myViewHolder.image);
//        Picasso.with(mcontext).load(brand.getBrand_image()).into(myViewHolder.image);


        myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String bName = brandList.get(i).getBrand_name();
                String pic = brandList.get(i).getBrand_image();

                Log.i("loz", bName);

                Intent intent = new Intent(context, updateBrand.class);
                intent.putExtra("brand_name", bName);
                intent.putExtra("imgurl", pic);
                context.startActivity(intent);
            }
        });
 @Override
    public int getItemCount() {
        return brandList.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView brand_name;
        CardView brand_cv;
        ImageView image, btnDelete;
        LinearLayout frame_layout;

        public MyViewHolder(View itemView) {
            super(itemView);

            brand_name = itemView.findViewById(R.id.name);
            image = itemView.findViewById(R.id.image);
            brand_cv = itemView.findViewById(R.id.brand_cv);
            btnDelete = itemView.findViewById(R.id.delete);
            frame_layout = itemView.findViewById(R.id.frame_layout);

        }
    }

}

我的品牌活动类别

public class BrandActivity extends AppCompatActivity {



    DatabaseReference databaseReference;
    ArrayList<Brand> brandList;
    RecyclerView recyclerView;
    SearchView searchView;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_brand);


        databaseReference = FirebaseDatabase.getInstance().getReference("Brand").child("");
        recyclerView = findViewById(R.id.rv);
        searchView = findViewById(R.id.searchView);

    }

    @Override
    protected void onStart() {
        super.onStart();
        if (databaseReference != null) {
            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
                        brandList = new ArrayList<>();

                        for (DataSnapshot ds : dataSnapshot.getChildren()) {
                            brandList.add(ds.getValue(Brand.class));
                        }

                    }

                    BrandAdapter brandAdapter = new BrandAdapter(brandList);
                    recyclerView.setAdapter(brandAdapter);

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(BrandActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
        }
}


<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    app:cardElevation="5dp">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:background="@color/lightgray">

            <TextView
                android:id="@+id/brand_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="sample"
                android:textStyle="bold"
                android:textColor="@color/white"
                android:textAlignment="center"
                android:background="@color/black"
                android:textSize="20sp"
                android:textAppearance="@style/TextAppearance.AppCompat.Headline" />


            <ImageView
                android:id="@+id/image"
                android:layout_width="match_parent"
                android:layout_height="180dp"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="#FCFAFA"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/delete"
                    android:layout_width="60dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginLeft="10dp"
                    android:layout_marginTop="5dp"
                    android:padding="8dp"
                    android:visibility="visible"
                    app:srcCompat="@drawable/trash" />


            </LinearLayout>
        </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#000" />
</androidx.cardview.widget.CardView>

品牌型号

public class Brand {
    public String brand_id;
    public String brand_name;
    public String brand_image;

    public Brand(){}

    public Brand(String brand_id, String brand_name, String brand_image) {
        this.brand_id = brand_id;
        this.brand_name = brand_name;
        this.brand_image = brand_image;
    }

    public String getBrand_id() {
        return brand_id;
    }

    public void setBrand_id(String brand_id) {
        this.brand_id = brand_id;
    }

    public String getBrand_name() {
        return brand_name;
    }

    public void setBrand_name(String brand_name) {
        this.brand_name = brand_name;
    }

    public String getBrand_image() {
        return brand_image;
    }

    public void setBrand_image(String brand_image) {
        this.brand_image = brand_image;
    }
}

java android recycler-adapter
1个回答
0
投票

尝试将brand_name = itemView.findViewById(R.id.name)更改为brand_name = itemView.findViewById(R.id.brand_name)

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