رفتن به مطلب
  • 0

مشکل ریسایکلرویو (NullPointerException)


Salar82

سوال

سلام

من هر کاری که میکنم، نمیتونمبا ریسایکلر ویو کار کنم. بلافاصله بعد از اجرا، ارور میده و برنامه کرش میکنه.

کد xml لایوت MainActivity:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/Layout_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  
  <androidx.recyclerview.widget.RecyclerView
        xmlns:app="http://schemas.android.com/apk/res-auto"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        android:id="@+id/idrec"
        android:layout_width="409dp"
        android:layout_height="361dp"
        android:scrollbars="vertical"

        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

لایوت ایتم های ریسایکلر:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="8dp">

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="120dp"
                android:layout_height="90dp"
                android:padding="4dp" />

            <TextView
                android:id="@+id/textViewTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@id/imageView"
                android:text="Apple MacBook Air Core i5 5th Gen - (8 GB/128 GB SSD/Mac OS Sierra)"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                android:textColor="#000000" />

            <TextView
                android:id="@+id/textViewShortDesc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textViewTitle"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_toRightOf="@id/imageView"
                android:text="13.3 Inch, 256 GB"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small" />

            <TextView
                android:id="@+id/textViewRating"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textViewShortDesc"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_toRightOf="@id/imageView"
                android:background="@color/colorPrimary"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:text="4.7"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small.Inverse"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/textViewPrice"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textViewRating"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_toRightOf="@id/imageView"
                android:text="INR 56990"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
                android:textStyle="bold" />

        </RelativeLayout>

    </androidx.cardview.widget.CardView>

</LinearLayout>

 

 

 

اینم کلاس آداپتر:

class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ProductViewHolder> {


	//this context we will use to inflate the layout
	private Context mCtx;


	//getting the context and product list with constructor
	public ProductAdapter(Context mCtx) {
		this.mCtx = mCtx;
	}

	@Override
	public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
		//inflating and returning our view holder
		LayoutInflater inflater = LayoutInflater.from(mCtx);
		View view = inflater.inflate(R.layout.recycler_items, null);
		return new ProductViewHolder(view);
	}

	@Override
	public void onBindViewHolder(ProductViewHolder holder, int position) {
		

		//binding the data with the viewholder views
		holder.textViewTitle.setText("title:" + position);
		holder.textViewShortDesc.setText("Short:" + position);
		holder.textViewRating.setText("Rating:" + position);
		holder.textViewPrice.setText("Price:" + position);

		holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(R.drawable.image1));

	}


	@Override
	public int getItemCount() {
		return 10;
	}


	class ProductViewHolder extends RecyclerView.ViewHolder {

		TextView textViewTitle, textViewShortDesc, textViewRating, textViewPrice;
		ImageView imageView;

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

			textViewTitle = itemView.findViewById(R.id.textViewTitle);
			textViewShortDesc = itemView.findViewById(R.id.textViewShortDesc);
			textViewRating = itemView.findViewById(R.id.textViewRating);
			textViewPrice = itemView.findViewById(R.id.textViewPrice);
			imageView = itemView.findViewById(R.id.imageView);
		}
	}

 

 

و اینم MainActivity:

public class MainActivity extends AppCompatActivity {

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

		recyclerView = findViewById(R.id.RecyclerView_Main);
		recyclerView.setLayoutManager(new LinearLayoutManager(this));
      	recyclerView.setHasFixedSize(true);

		//creating recyclerview adapter
		ProductAdapter adapter = new ProductAdapter(this);

		//setting adapter to recyclerview
		recyclerView.setAdapter(adapter);
	}

 

 

حالا میاد از خط زیر ایراد میگیره:

recyclerView.setLayoutManager(new LinearLayoutManager(this));

 

ارور:

java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.ali.ash/ir.ali.ash.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference

 

 

اگر کسی مشکل رو میدونه، لطفا راهنمایی کنه. خیلی عجله دارم.

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در 17 دقیقه قبل، Salar82 گفته است :

این ارور برای تمام خطوط مربوط به ریسایکلر هست:


		recyclerView.setHasFixedSize(true);
		recyclerView.setLayoutManager(new LinearLayoutManager(this));
		recyclerView.setAdapter(adapter);

 

عزیز آیدی ریسایکلرویوتون idrec هست ولی شما اونو با آیدی RecyclerView_Main گرفتین. در ضمن خط زیر رو هم حذف کنید.

 app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 12 دقیقه قبل، Salar82 گفته است :

حالا میاد از خط زیر ایراد میگیره:

این ارور برای تمام خطوط مربوط به ریسایکلر هست:

		recyclerView.setHasFixedSize(true);
		recyclerView.setLayoutManager(new LinearLayoutManager(this));
		recyclerView.setAdapter(adapter);

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 5 دقیقه قبل، محمدرضا شاهپیری گفته است :

عزیز آیدی ریسایکلرویوتون idrec هست ولی شما اونو با آیدی RecyclerView_Main گرفتین. در ضمن خط زیر رو هم حذف کنید.


 app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"

 

خیلی خیلی متشکرم.

در 5 دقیقه قبل، محمدرضا شاهپیری گفته است :

ولی شما اونو با آیدی RecyclerView_Main گرفتین

اشتباهی با یه لایوت دیگه قاطی کردم. :smiley4:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...