بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل دو RecyclerView در یک اکتیویتی
سلام دوستان من به تازگی از 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 پاسخ وجود دارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
