Ich wende eigene Logik auf ein einzelnes Element in Recyclerview an. wenn i Element auswählen und letzte Position bewegen und neues Element auswählen und Hintergrund entfernen zuletzt ausgewähltes Element zeigt dann FehlerRecyclerview selected view null on Scroll
java.lang.NullPointerException: Der Versuch von Feld zu lesen ‚android.view.View android.support.v7 .widget.RecyclerView $ ViewHolder.itemView‘auf ein null-Objekt Referenz
Meine Logik ist:
recyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(SubServicesActivity.this, recyclerViewSubServices ,new RecyclerItemClickListener.OnItemClickListener() {
@Override public void onItemClick(View view, int position) {
String selectedName = serviceLists.get(position).getServiceTitleEnglish();
RecyclerView.ViewHolder viewHolder = recyclerViewSubServices.findViewHolderForPosition(position);
FrameLayout serviceImageBackground = (FrameLayout) viewHolder.itemView.findViewById(R.id.image_back_layout);
if(!select) {
serviceImageBackground.setBackground(getResources().getDrawable(R.drawable.selection_border_tick_rec));
select = true;
selectedPosition = position;
}else{
RecyclerView.ViewHolder viewHolderselect = recyclerViewSubServices.findViewHolderForPosition(selectedPosition);
FrameLayout serviceImageSelect = (FrameLayout) viewHolderselect.itemView.findViewById(R.id.image_back_layout);
serviceImageSelect.setBackgroundColor(getResources().getColor(R.color.material_grey_200));
serviceImageBackground.setBackground(getResources().getDrawable(R.drawable.selection_border_tick_rec));
selectedPosition = position;
}
}
@Override public void onLongItemClick(View view, int position) {
// do whatever
}
})
);
Adapter Klasse:
public class SubServicesAdapter extends RecyclerView.Adapter<SubServicesAdapter.ServiceViewHolder> {
List<ServiceList> subServiceModels;
Context context;
public class ServiceViewHolder extends RecyclerView.ViewHolder{
TextView textViewSubServiceName;
ImageView imageViewSubServiceIcon;
FrameLayout imageBacklayout;
CheckBox selectSubServiceCheckBox;
public ServiceViewHolder(View itemView) {
super(itemView);
this.textViewSubServiceName = (TextView) itemView.findViewById(R.id.sub_service_title_textview);
this.imageViewSubServiceIcon = (ImageView) itemView.findViewById(R.id.sub_service_icon_imageview);
this.imageBacklayout = (FrameLayout) itemView.findViewById(R.id.image_back_layout);
this.selectSubServiceCheckBox = (CheckBox) itemView.findViewById(R.id.select_sub_service_checkbox);
}
}
public SubServicesAdapter(Context _context, List<ServiceList> _subServiceModels) {
this.subServiceModels = _subServiceModels;
this.context = _context;
}
@Override
public ServiceViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.sub_service_card_layout, parent, false);
ServiceViewHolder myViewHolder = new ServiceViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(ServiceViewHolder holder, int position) {
final ServiceList serviceItem = subServiceModels.get(position);
TextView textViewSubServiceName = holder.textViewSubServiceName;
ImageView imageViewSubServiceIcon = holder.imageViewSubServiceIcon;
FrameLayout imageBackground = holder.imageBacklayout;
final CheckBox checkBox = holder.selectSubServiceCheckBox;
textViewSubServiceName.setText(subServiceModels.get(position).getServiceTitleEnglish());
Picasso.with(context)
.load(subServiceModels.get(position).getImageURL())
.resize(150, 150)
.centerCrop()
.into(imageViewSubServiceIcon);
// imageViewSubServiceIcon.setImageResource(icons[position]);
}
@Override
public int getItemCount() {
return subServiceModels.size();
}
}
'viewHolder' ist null. – Divers
poste deinen Adaptercode –
@an_droid_dev Ich poste Adapterklasse überprüfe es. – Nabeel