Posición absoluta en BaseAdapter de GrivView

Estoy tratando de escribir BaseAdapter a mi GrivView pero en

 public View getView(int position, View convertView, ViewGroup parent) { ... } 

La position al renderizar los siguientes elementos es:

 visible elements --------------- | 1 2 3 | | 4 5 6 | <--- screen | 7 8 9 | --------------- nonvisible elements | 1 2 3 | <-- below visible area | 4 5 6 | 

Donde real es:

 visible elements --------------- | 1 2 3 | | 4 5 6 | | 7 8 9 | --------------- nonvisible elements | 10 11 12 | | 13 14 15 | 

Soy consciente de que es el comportamiento correcto (que sólo cuenta los elementos visibles), pero ¿cómo obtener la posición real del elemento en la lista? ¿O cómo saber qué disposición debo devolver?

EDIT : Sin embargo, el número devuelto son mucho más aleatorios de lo que mostré, incluso en la pantalla.

Usar BaseAdapter exactamente como Google Documentatnion muestra funciona bien.

Mi problema fue:

  • NO utilizar ViewHolder

  • O intentar mantener el ID en la vistaHolder

Debo utilizar ViewHolder como sigue:

 public View getView(int position, View convertView, ViewGroup parent) { // create holder ViewHolder holder; // check if layout exists if (convertView == null) { // if it's not recycled, initialize some LayoutInflater inflater = LayoutInflater.from(mContext); convertView = (LinearLayout) inflater.inflate(R.layout.card_prev, null); // Create layout elements ImageView image = (ImageView) convertView .findViewById(R.id.imageViewThumbnail); TextView desc = (TextView) convertView .findViewById(R.id.textViewDescription); // Place layout elements in holder holder = new ViewHolder(); holder.id = position; holder.preview = image; holder.text = desc; convertView.setTag(holder); } else { // Get existing holder holder = (ViewHolder) convertView.getTag(); } // Update layout here using layout elements from holder String imageName = "image_" + (position + 1); final int imageId = mContext.getResources().getIdentifier(imageName, "drawable", "com.myapp"); holder.text.setText("" + (position+1)); holder.preview.setImageResource(imageId); holder.preview.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent fullScreenIntent = new Intent(v.getContext(), FullScreenImage.class); fullScreenIntent.putExtra("imageRes", imageId); MainMenuActivity.currentShownActivity .startActivity(fullScreenIntent); } }); return convertView; } 
  • Añadir scroll en tabhost en android
  • Spinner de ancho completo en ActionBar
  • Establecer márgenes en cardview de forma programática
  • Edición de la anchura de TableLayout de Android
  • Etiqueta: TextLayoutCache Texto: Valor de caché eliminado
  • ¿Por qué añadir <merge> cambia el diseño de Android?
  • ¿Cómo saber cuándo una actividad finaliza un pase de diseño?
  • ¿Qué es <view /> etiqueta XML en los diseños
  • Problemas de compatibilidad de interfaz de usuario entre diferentes versiones de API
  • Escala widget en Android (dp, px, tamaño de pantalla)
  • Cómo utilizar View.OnTouchListener en lugar de onClick
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.