I have a custom Recycle View adapter that list my items. in each Item I check database and draw some circles with colors.
when I scroll listview very fast every drawed data ( not title and texts) show wrongs! how I can manage dynamic View creation without showing wrong data?!
@Override public void onBindViewHolder(final ItemViewHolder itemViewHolder, int i) { itemViewHolder.date.setText(items.get(i).getData()); // set the title itemViewHolder.relative_layout_tag_place.addView(generateTagImages(items.get(i).getServerId())); // had to generate a Relativelaout with }
and this is importMenuTags():
private RelativeLayout generateTagImages(String serverId) { List color_list = new ArrayList<>(); RelativeLayout result = new RelativeLayout(context); List list = db.getCardTags(serverId); int i = 0; for (String string : list) { RelativeLayout rl = new RelativeLayout(context); color_list.add(get_the_proper_color); Drawable drawable = context.getResources().getDrawable(R.drawable.color_shape); drawable.setColorFilter(Color.parseColor(dao.getTagColor(string)), PorterDuff.Mode.SRC_ATOP); RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lparams.addRule(RelativeLayout.ALIGN_PARENT_START); lparams.setMargins(i, 0, 0, 0); lparams.width = 35; lparams.height = 35; rl.setLayoutParams(lparams); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { rl.setBackground(drawable); } else { rl.setBackgroundDrawable(drawable); } result.addView(rl); i = i + 25; } return result; }
I also had the same problem in simple custom adapter that it's solved by moving my function place out of
if (convertView == null) {
this is the link.