I'm struggling to debug a weird UI crash for lists in an Android app. In 99% of cases, everything looks and works as it should, but from time to time my lists behave strangely. When you restart the application, the list looks normal.
Does anyone know if this is a known android bug?
The fact that this happens only randomly (I tried to figure out the picture and can not) scares me. I could not find anything on the Internet about similar issues. I hope I just searched for the wrong search terms.
Any advice / help would be greatly appreciated.
Thanks in advance.
What usually looks in Listview:

What a listview looks like from time to time:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_height_padded"
android:descendantFocusability="blocksDescendants"
android:layout_margin="0dp"
android:padding="@dimen/padding_list">
<ImageView
android:id="@+id/imageview_poi_tile_detail_button_detail"
android:background="@color/ca"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp"
android:layout_toLeftOf="@+id/imageview_poi_tile_map_button"/>
<ImageView
android:id="@+id/delimiter_poi_tile"
android:layout_width="@dimen/delimiter_size"
android:layout_height="@dimen/tile_description_height"
android:layout_marginTop="@dimen/margin_list_vertical"
android:layout_marginBottom="@dimen/margin_list_vertical"
android:background="@color/git"
android:layout_toRightOf="@id/imageview_poi_tile_icon"/>
<ImageView
android:id="@id/imageview_poi_tile_map_button"
android:background="@color/lr"
android:src="@drawable/map"
android:scaleType="fitCenter"
android:padding="@dimen/image_button_padding"
android:layout_width="@dimen/button_size"
android:layout_height="match_parent"
android:layout_alignParentRight="true"/>
<ImageView
android:id="@+id/imageview_poi_tile_icon"
android:src="@drawable/poidefaultgit"
android:scaleType="fitStart"
android:padding="@dimen/image_button_padding"
android:background="@color/ca"
android:layout_width="@dimen/button_size"
android:layout_height="@dimen/tile_description_height"
android:layout_margin="0dp"/>
<TextView
android:id="@+id/textview_poi_tile_type"
android:background="@color/ca"
android:paddingLeft="@dimen/padding_list"
android:layout_margin="0dp"
android:gravity="left|top"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textStyle="bold"
android:text="Poi Type"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/git"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_title_height"
android:layout_toRightOf="@id/delimiter_poi_tile"
android:layout_toLeftOf="@+id/textview_poi_tile_distance"/>
<TextView
android:id="@+id/textview_poi_tile_description"
android:background="@color/ca"
android:paddingLeft="@dimen/padding_list"
android:layout_margin="0dp"
android:gravity="left|top"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Address"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/git"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/textview_poi_tile_type"
android:layout_toRightOf="@id/delimiter_poi_tile"
android:layout_toLeftOf="@id/imageview_poi_tile_map_button"/>
<TextView
android:id="@id/textview_poi_tile_distance"
android:background="@color/ca"
android:textColor="@color/lr"
android:text=""
android:paddingRight="@dimen/padding_list"
android:layout_margin="0dp"
android:gravity="left|top"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/imageview_poi_tile_map_button"/>
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
TextView description;
TextView type;
TextView distance;
ImageView imageView;
ImageView mapIcon;
ImageView clickableArea;
if(convertView == null)
{
convertView = LayoutInflater.from(context).inflate(R.layout.listitem_poi, parent, false);
description = (TextView) convertView.findViewById(R.id.textview_poi_tile_description);
type = (TextView) convertView.findViewById(R.id.textview_poi_tile_type);
distance = (TextView) convertView.findViewById(R.id.textview_poi_tile_distance);
imageView = (ImageView) convertView.findViewById(R.id.imageview_poi_tile_icon);
mapIcon = (ImageView) convertView.findViewById(R.id.imageview_poi_tile_map_button);
clickableArea = (ImageView) convertView.findViewById(R.id.imageview_poi_tile_detail_button_detail);
convertView.setTag(new ViewHolder(description, type, distance, imageView, mapIcon, clickableArea));
}
else
{
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
description = viewHolder.description;
type = viewHolder.type;
distance = viewHolder.distance;
imageView = viewHolder.imageView;
mapIcon = viewHolder.mapIcon;
clickableArea = viewHolder.clickableArea;
}
final int finalIndex = position;
final PointOfInterest poi = getItem(position);
description.setText(poi.getDescription());
type.setText(poi.getName());
imageView.setImageResource(R.drawable.poidefaultgit);
distance.setText(poi.getDistance());
return convertView;
}