Cómo forzar a GridView a las celdas de carga

GridView se desplaza programáticamente y no aparece ningún elemento nuevo desde la parte inferior.

He intentado actualizar con la siguiente línea, pero no obliga a GridView a cargar nuevos elementos.

 imageAdapter.notifyDataSetChanged(); gridview.invalidateViews(); gridview.setAdapter(imageAdapter); 

Introduzca aquí la descripción de la imagen


Simplificada la aplicación, ahora el desplazamiento se puede disparar con el botón de clic, pero los próximos elementos vacíos siguen apareciendo. Aquí está un código:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final CustomGridView gridview = (CustomGridView) findViewById(R.id.gridView1); final ImageAdapter imageAdapter = new ImageAdapter(this); gridview.setAdapter(imageAdapter); gridview.setNumColumns(3); LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams)gridview.getLayoutParams(); linearParams.width=66*3; gridview.setLayoutParams(linearParams); final Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { gridview.scrollBy(0, 44); } }); } 

 public class ImageAdapter extends BaseAdapter { private Context mContext; public ImageAdapter(Context c) { mContext = c; } public int getCount() { return 300; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } // create a new ImageView for each item referenced by the Adapter public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it's not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(66, 66)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(0, 0, 0, 0); // 8 8 8 8 } else { imageView = (ImageView) convertView; } imageView.setImageResource(R.drawable.asdf); return imageView; } } 

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.j4nos.moviebuffs12.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <HorizontalScrollView android:id="@+id/horizontalScrollView" android:layout_width="198dp" android:layout_height="match_parent" android:layout_marginTop="66dp" android:layout_marginLeft="0dp" android:layout_marginBottom="0dp"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <com.j4nos.moviebuffs12.CustomGridView android:id="@+id/gridView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="0dp" android:columnWidth="66dp" android:horizontalSpacing="0dp" android:scrollbarAlwaysDrawHorizontalTrack="true" android:scrollbarAlwaysDrawVerticalTrack="true" android:scrollbars="horizontal" android:stretchMode="none" android:verticalSpacing="0dp" android:listSelector="@null" android:scaleType="centerCrop"> </com.j4nos.moviebuffs12.CustomGridView> </LinearLayout> </HorizontalScrollView> </RelativeLayout> 

 public class CustomGridView extends GridView { public CustomGridView(Context context) { super(context); } public CustomGridView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } /* ADD THIS */ @Override public int computeVerticalScrollOffset() { return super.computeVerticalScrollOffset(); } } 

One Solution collect form web for “Cómo forzar a GridView a las celdas de carga”

Creo que el problema es con la forma en que se desplazan:

 gridview.scrollBy(0, 44); 

Esto mueve la vista de cuadrícula, no el contenido de la vista de cuadrícula. Puede verificar esto agregando lo siguiente en su diseño dentro del componente CustomGridView :

 android:fastScrollAlwaysVisible="true" 

Ahora puede ver que no es el contenido de gridview con el que se está interactuando con la pulsación de botón.

En su lugar, sugiero que intente utilizar:

 gridview.scrollListBy(44); 

Si su nivel de API lo permite.

  • ¿Cómo aplicar diferentes iconos y texto diferente en el tutorial de vista de cuadrícula de Android?
  • Cómo establecer un número fijo de filas en android gridView?
  • Widget de cuadrícula Android de Google+ para el tutorial de tableta
  • Android: mostrar tarjetas como el diseño como en Google Keep
  • BaseAdapter y ContextMenu
  • Pasar de una vista de lista a una vista de cuadrícula
  • ¿Cómo puedo desactivar el desplazamiento de una vista de cuadrícula
  • Elementos del centro en GridView
  • Mantenga la posición de desplazamiento de GridView a través de la rotación de pantalla
  • Cómo manejar gestos de desplazamiento para gridview (android)
  • efecto de clic de cuadrícula
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.