آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل دو RecyclerView در یک اکتیویتی

احمد  10 سال پیش  10 سال پیش
+2 0

سلام دوستان من به تازگی از RecyclerView و CardView استفاده کردم و در یک اکتیویتی دو تا را قرار دادم مثل بازار یا دیجی حالا مشکل اینجاست که ادابتر اولی هم عکس و هم متن را لود می کنه از مموری هم متن را نشون میده اما همون کلاس را برای دومی کپی گرفتم و فقط مورودی را تغییر دادم اما در دومی روی قسمت نمایش عکس null pointer میده

کد ادابتر اولی:

 package my_adapter;

import java.util.ArrayList;

import my_class.G;
import my_struct.KGroupStruct;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AdapterCardGroup extends
		RecyclerView.Adapter<AdapterCardGroup.ViewHolder> {
	public ArrayList<KGroupStruct> kGroupStructs;
	private int version;

	// Provide a suitable constructor (depends on the kind of dataset)
	public AdapterCardGroup(ArrayList<KGroupStruct> kGroupList) {
		kGroupStructs = kGroupList;
	}

	// Create new views (invoked by the layout manager)
	@Override
	public AdapterCardGroup.ViewHolder onCreateViewHolder(ViewGroup parent,
			int viewType) {
		// create a new view
		View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
				R.layout.adapter_cardgroup, null);

		// create ViewHolder

		ViewHolder viewHolder = new ViewHolder(itemLayoutView);
		return viewHolder;
	}

	// Replace the contents of a view (invoked by the layout manager)
	@Override
	public void onBindViewHolder(ViewHolder viewHolder, final int position) {

		try {
			// - get data from your itemsData at this position
			// - replace the contents of the view with that itemsData

			viewHolder.txtname_cardgroup.setText(kGroupStructs.get(position)
					.getKG_Name().toString());

			viewHolder.imggroup_cardgroup.setImageBitmap(null);
			viewHolder.imggroup_cardgroup.setBackground(null);
			if (kGroupStructs.get(position).getKG_imageurl_sdcard()
					.equals("no_image")) {
				version = Build.VERSION.SDK_INT;

				noimage(viewHolder, version);

			} else {
				Bitmap bmp = BitmapFactory
.decodeFile(kGroupStructs.get(
						position).getKG_imageurl_sdcard());
				viewHolder.imggroup_cardgroup.setImageBitmap(bmp);
			}


			viewHolder.layoutRoot_cardgroup
					.setOnClickListener(new OnClickListener() {

						@Override
						public void onClick(View v) {
							G.selectedKmaker = null;
							G.selectedGroup = kGroupStructs.get(position)
									.getKG_Code();
							Intent intent = new Intent(G.CurrentActivity,
									ActivityKalaliast.class);
							// intent.putExtra("Filtterselected", "2");
							G.CurrentActivity.startActivity(intent);
						}
					});

			/*
			 * String mDrawableName = "ic_not_available";
			 * 
			 * int resID = G.context.getResources().getIdentifier(mDrawableName,
			 * "drawable", G.context.getPackageName());
			 * 
			 * viewHolder.imggroup_cardgroup.setBackgroundResource(resID);
			 */
		} catch (Exception e) {
			noimage(viewHolder, version);
			e.printStackTrace();
		}
	}

	private void noimage(ViewHolder viewHolder, int version2) {
		if (version >= 16) {
			viewHolder.imggroup_cardgroup.setBackground(G.context
					.getResources().getDrawable(R.drawable.ic_not_available));
		} else {
			viewHolder.imggroup_cardgroup.setBackgroundDrawable(G.context
					.getResources().getDrawable(R.drawable.ic_not_available));
		}
	}

	// Return the size of your dataset (invoked by the layout manager)
	@Override
	public int getItemCount() {
		return kGroupStructs.size();
	}

	// inner class to hold a reference to each item of RecyclerView
	public static class ViewHolder extends RecyclerView.ViewHolder {

		public TextView txtname_cardgroup;
		public LinearLayout layoutRoot_cardgroup;
		// public TextView txtdes_listkala;
		// public TextView txtprice_listkala;
		public ImageView imggroup_cardgroup;

		public ViewHolder(View itemLayoutView) {
			super(itemLayoutView);
			txtname_cardgroup = (TextView) itemLayoutView
					.findViewById(R.id.txtname_cardgroup);
			layoutRoot_cardgroup = (LinearLayout) itemLayoutView
					.findViewById(R.id.layoutRoot_cardgroup);
			// txtdes_listkala = (TextView) itemLayoutView
			// .findViewById(R.id.txtdes_listkala);
			// txtprice_listkala = (TextView) itemLayoutView
			// .findViewById(R.id.txtprice_listkala);
			imggroup_cardgroup = (ImageView) itemLayoutView
					.findViewById(R.id.imggroup_cardgroup);

		}
	}

}

کد ادابتر دومی:

 package my_adapter;

import java.util.ArrayList;

import my_class.G;
import my_struct.KMakerStruct;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AdapterCardKmaker extends
		RecyclerView.Adapter<AdapterCardKmaker.ViewHolder> {
	public ArrayList<KMakerStruct> kMakerStructs;
	private int version;

	// Provide a suitable constructor (depends on the kind of dataset)
	public AdapterCardKmaker(ArrayList<KMakerStruct> arrayList) {
		kMakerStructs = arrayList;
	}

	// Create new views (invoked by the layout manager)
	@Override
	public AdapterCardKmaker.ViewHolder onCreateViewHolder(ViewGroup parent,
			int viewType) {
		// create a new view
		View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
				R.layout.adapter_cardkmaker, null);

		// create ViewHolder

		ViewHolder viewHolder = new ViewHolder(itemLayoutView);
		return viewHolder;
	}

	// Replace the contents of a view (invoked by the layout manager)
	@Override
	public void onBindViewHolder(ViewHolder viewHolder, final int position) {

		try {
			// - get data from your itemsData at this position
			// - replace the contents of the view with that itemsData

			viewHolder.txtname_cardkmaker.setText(kMakerStructs.get(position)
					.getK_SName().toString());

			viewHolder.imgkmaker_cardkmaker.setImageBitmap(null);
			viewHolder.imgkmaker_cardkmaker.setBackground(null);
			String imgsd = kMakerStructs.get(position).getSZ_imageurl_sdcard();
			if (imgsd.equals("no_image") || imgsd == null) {
				version = Build.VERSION.SDK_INT;
				noimage(viewHolder, version);

			} else {
				Bitmap bmp = BitmapFactory
.decodeFile(kMakerStructs.get(
						position).getSZ_imageurl_sdcard());
				viewHolder.imgkmaker_cardkmaker.setImageBitmap(bmp);
			}

			viewHolder.layoutRoot_cardkmaker
					.setOnClickListener(new OnClickListener() {

						@Override
						public void onClick(View v) {
							G.selectedGroup = null;
							G.selectedKmaker = kMakerStructs.get(position)
									.getK_SCode();
							Intent intent = new Intent(G.CurrentActivity,
									ActivityKalaliast.class);
							// intent.putExtra("Filtterselected", "2");
							G.CurrentActivity.startActivity(intent);
						}
					});

			/*
			 * String mDrawableName = "ic_not_available";
			 * 
			 * int resID = G.context.getResources().getIdentifier(mDrawableName,
			 * "drawable", G.context.getPackageName());
			 * 
			 * viewHolder.imggroup_cardgroup.setBackgroundResource(resID);
			 */
		} catch (NullPointerException e) {
			noimage(viewHolder, version);
			viewHolder.layoutRoot_cardkmaker
					.setOnClickListener(new OnClickListener() {

						@Override
						public void onClick(View v) {
							G.selectedGroup = null;
							G.selectedKmaker = kMakerStructs.get(position)
									.getK_SCode();
							Intent intent = new Intent(G.CurrentActivity,
									ActivityKalaliast.class);
							// intent.putExtra("Filtterselected", "2");
							G.CurrentActivity.startActivity(intent);
						}
					});
			e.printStackTrace();
		}
	}

	private void noimage(ViewHolder viewHolder, int version2) {
		if (version >= 16) {
			viewHolder.imgkmaker_cardkmaker.setBackground(G.context
					.getResources().getDrawable(R.drawable.ic_not_available));
		} else {
			viewHolder.imgkmaker_cardkmaker.setBackgroundDrawable(G.context
					.getResources().getDrawable(R.drawable.ic_not_available));
		}
	}

	// Return the size of your dataset (invoked by the layout manager)
	@Override
	public int getItemCount() {
		return kMakerStructs.size();
	}

	// inner class to hold a reference to each item of RecyclerView
	public static class ViewHolder extends RecyclerView.ViewHolder {

		public TextView txtname_cardkmaker;
		public LinearLayout layoutRoot_cardkmaker;
		public ImageView imgkmaker_cardkmaker;

		public ViewHolder(View itemLayoutView) {
			super(itemLayoutView);
			txtname_cardkmaker = (TextView) itemLayoutView
					.findViewById(R.id.txtname_cardkmaker);
			layoutRoot_cardkmaker = (LinearLayout) itemLayoutView
					.findViewById(R.id.layoutRoot_cardkmaker);
			imgkmaker_cardkmaker = (ImageView) itemLayoutView
					.findViewById(R.id.imgkmaker_cardkmaker);
		}
	}
}

کد cardview اولی:

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="150dp"
    android:layout_height="180dp"
    android:layout_margin="5dp"
    android:clickable="true"
    android:focusable="true"
    android:orientation="horizontal"
    card_view:cardCornerRadius="10dp"
    android:padding="4dp"
    card_view:cardElevation="4dp"
    card_view:cardUseCompatPadding="true" >

    <LinearLayout
        android:id="@+id/layoutRoot_cardgroup"
    android:layout_width="150dp"
    android:layout_height="170dp"
        android:layout_margin="4dp"
        android:background="@color/backgrand_color"
        android:clipChildren="false"
        android:layoutDirection="ltr"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imggroup_cardgroup"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center"
            android:layout_margin="4dp"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/txtname_cardgroup"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="5dp"
            android:maxLines="2"
            android:text="TextView"
            android:textColor="@color/black_color" />
    </LinearLayout>

</android.support.v7.widget.CardView>

کد carview دومی:

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="150dp"
    android:layout_height="180dp"
    android:layout_margin="5dp"
    android:clickable="true"
    android:focusable="true"
    android:orientation="horizontal"
    android:padding="4dp"
    card_view:cardCornerRadius="10dp"
    card_view:cardElevation="4dp"
    card_view:cardUseCompatPadding="true" >

    <LinearLayout
        android:id="@+id/layoutRoot_cardkmaker"
        android:layout_width="150dp"
        android:layout_height="170dp"
        android:layout_margin="4dp"
        android:background="@color/backgrand_color"
        android:clipChildren="false"
        android:layoutDirection="ltr"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imgkmaker_cardkmaker"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center"
            android:layout_margin="4dp"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/txtname_cardkmaker"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:gravity="center"
            android:maxLines="2"
            android:padding="5dp"
            android:text="TextView"
            android:textColor="@color/black_color" />
    </LinearLayout>

</android.support.v7.widget.CardView>

اینم اکتیویتی

 <android.support.v7.widget.RecyclerView
            android:id="@+id/my_recycler_view2"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:padding="4dp"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="7dp"
            android:layout_marginRight="7dp"
            android:layout_marginTop="5dp" />

<android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="180dp" android:padding="4dp" android:layout_marginBottom="5dp" android:layout_marginLeft="7dp" android:layout_marginRight="7dp" android:layout_marginTop="5dp" />
 if (G.KGroupList.size() > 0) {
				mRecyclerView.setLayoutManager(layoutManager);
				// specify an adapter (see also next example)
				mAdapter = new AdapterCardGroup(G.KGroupList);
				mRecyclerView.setAdapter(mAdapter);
			}
			if (G.KMakerList.size() > 0) {

				mRecyclerView2.setLayoutManager(layoutManager2);
				// specify an adapter (see also next example)
				mAdapter2 = new AdapterCardKmaker(G.KMakerList);
				mRecyclerView2.setAdapter(mAdapter2);
			}

 

 

 

0 0
منظورت را از 2 تا RecyclerView توی یک صفحه مثل دیجی کالا و بازار را متوجه نشدم کامل تر توضیح بده تا بتونیم بهت کمک کنیم . منظورت اینه که یک RecyclerView افقی را میخوای توی یک RecyclerView عمودی نشون بدی ؟ (10 سال پیش)
0 0
اپ دیجی را دیدین دو ردیف محصولاتش را به صورت افقی میاره 20 تایی (جدیدترین محصولات و محصولات پر فروش) منم همین را گذاشتم دو تا زیر هم اما قسمت عکس دومی مشکل داره (10 سال پیش)
+2 0
سلام از این آموزش استفاده کن رفیق . من چند روز گشتم و بهترین آموزش این بود لینک (10 سال پیش)
0 0
دقیقا همینو می خواستم ممنون :-) (10 سال پیش)
0 0
باز هم همون مشکل را دارم و توی دومی null pointer میاد (10 سال پیش)
0 0
داداش احتمالا دیتای درستی را به آداپترها نمیدی . باید ببینی کجا اشتباه داری . (10 سال پیش)
0 0
داداش احتمالا دیتای درستی را به آداپترها نمیدی . باید ببینی کجا اشتباه داری . کدات را بزار ببینیم (10 سال پیش)
0 0
کد ها را گذاشتم همراه با عکس (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
احمد  10 سال پیش
+1 0

+1 0
ردیف اول درسته و تصویر لود میشه اما دیف دوم نه خیلی عجله دارم اما درست نمیشه (10 سال پیش)
0 0
کسی میدونه (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .