Android GridView leave trail when scrolling -


i have gridview implemented within activity , fragment, , contain own adapter. works great, until scrolling, when try scroll appears leave background of first items loaded.

here's printscreen of behavior here's code implementing:

activity class

    public class favoriteactivity extends actionbaractivity {     private final string log_tag = favoriteactivity.class.getsimplename();     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_favorite);         if (savedinstancestate == null) {             getsupportfragmentmanager().begintransaction()                     .add(r.id.container, new favoritelistfragment())                     .commit();         }     }     @override     protected void onresume() {         super.onresume();         favoritelistfragment fragment = (favoritelistfragment)getsupportfragmentmanager().findfragmentbyid(r.id.container);         if ( null != fragment ) {             fragment.onrestartloader();         }     } } 

fragment class

 public class favoritelistfragment extends fragment implements loadermanager.loadercallbacks<cursor> {     public static final string log_tag = favoritelistfragment.class.getsimplename();     private static final int loader = 0;     private static final string selected_key = "selected_position";     private resultlistadapter madapter;     private gridview mgridview;     private int mposition = listview.invalid_position;      public static final string[] smcontent_columns = {             smdbcontract.smcontententry.column_title,     };      static final int col_title      = 0;      @override     public void onactivitycreated(bundle savedinstancestate) {         getloadermanager().initloader(loader, null, this);         super.onactivitycreated(savedinstancestate);     }      @override     public view oncreateview(layoutinflater inflater,                              viewgroup container,                              bundle savedinstancestate) {          madapter = new resultlistadapter(getactivity(), null, 0);         madapter.setisfavoriteview(true);         view rootview = inflater.inflate(r.layout.fragment_favorite, container, false);         mgridview = (gridview) rootview.findviewbyid(r.id.listview_sm_content_favorite);         mgridview.setadapter(madapter);         if (savedinstancestate != null && savedinstancestate.containskey(selected_key)) {             mposition = savedinstancestate.getint(selected_key);         }         return rootview;     }      void onrestartloader() {         getloadermanager().restartloader(loader, null, this);     }      @override     public void onsaveinstancestate(bundle outstate) {         // when tablets rotate, selected list item needs saved.         // when no item selected, mposition set listview.invalid_position,         if (mposition != listview.invalid_position) {             outstate.putint(selected_key, mposition);         }         super.onsaveinstancestate(outstate);     }      @override     public loader<cursor> oncreateloader(int i, bundle bundle) {         string favs = utility.getfavoritesids(getactivity());          uri resultsearchuri = smdbcontract.smcontententry                 .buildsmcontentmultiple(smdbcontract.category_serie, favs);         log.d(log_tag,"prefs uri: "+resultsearchuri);          return new cursorloader(getactivity(),                 resultsearchuri,                 smcontent_columns,                 null,                 null,                 null);     }      @override     public void onloadfinished(loader<cursor> loader, cursor data) {         madapter.swapcursor(data);         madapter.setcursor(data);         if (mposition != listview.invalid_position) {             mgridview.smoothscrolltoposition(mposition);         }     }      @override     public void onloaderreset(loader<cursor> loader) {         madapter.swapcursor(null);     } } 

adapter

    public class resultlistadapter extends cursoradapter {      private context mcontext;     private cursor mcursor;      public resultlistadapter(context context, cursor c, int flags) {         super(context, c, flags);         mcontext = context;         mcursor = c;     }      public cursor getcursor() {         return mcursor;     }      public void setcursor(cursor mcursor) {         this.mcursor = mcursor;     }      public static class viewholder {         public final imageview iconview;         public final textview titleview;          public viewholder(view view) {             iconview = (imageview) view.findviewbyid(r.id.list_item_icon);             titleview = (textview) view.findviewbyid(r.id.list_item_title_textview);         }     }      @override     public view newview(context context, cursor cursor, viewgroup parent) {         view view = layoutinflater.from(context).inflate(r.layout.grid_item, parent, false);         viewholder viewholder = new viewholder(view);         view.settag(viewholder);          return view;     }      @override     public void bindview(view view, context context, cursor cursor) {          viewholder viewholder = (viewholder) view.gettag();         if (viewholder.iconview != null) {             picasso.with(context)                     .load(cursor.getstring(resultlistfragment.col_poster))                     .fit()                     .centerinside()                     .into(viewholder.iconview);         }          if (viewholder.titleview != null)             viewholder.titleview.settext(cursor.getstring(resultlistfragment.col_title));     } } 

activity layout

<fragment     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:id="@+id/container"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:layout_marginleft="16dp"     android:layout_marginright="16dp"     android:name=".favoritelistfragment"     tools:context=".favoritelistfragment"     tools:layout="@android:layout/list_content" /> 

fragment layout

<framelayout     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context="![enter image description here][1].favoritelistfragment">      <gridview         android:id="@+id/listview_sm_content_favorite"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:columnwidth="100dp"         android:numcolumns="auto_fit"         android:verticalspacing="5dp"         android:horizontalspacing="5dp"         android:stretchmode="columnwidth"         android:gravity="center"         />  </framelayout> 

grid item layout

<?xml version="1.0" encoding="utf-8"?> <linearlayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="wrap_content"     android:layout_height="wrap_content">      <framelayout         android:layout_width="100dp"         android:layout_height="150dp"         android:layout_gravity="center"         >          <imageview             android:id="@+id/list_item_icon"             android:layout_width="match_parent"             android:layout_height="match_parent"             android:src="@mipmap/ic_launcher"/>      </framelayout>     <textview         android:id="@+id/list_item_title_textview"         android:layout_height="wrap_content"         android:layout_width="wrap_content"         android:fontfamily="sans-serif-light"         android:layout_gravity="center"         android:textappearance="?android:textappearancemedium"         android:text="my item title"/>  </linearlayout> 

update: found out removing code favoriteactivity.oncreate error stops... why!? can tell me

   if (savedinstancestate == null) {         getsupportfragmentmanager().begintransaction()                 .add(r.id.container, new favoritelistfragment())                 .commit();     } 

remove following lines grid item layout:

from imageview remove:

android:src="@mipmap/ic_launcher" 

from textview remove:

android:text="my item title" 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -