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:
- Uso adecuado para TextUtils.commaEllipsize
- ¿Cómo poner publicidad en mi aplicación Android?
- Android - Cómo comprobar si textview es nulo o no nulo
- Cómo crear una animación de diapositivas en Android?
- ¿Cuál es la diferencia entre getExtras y getBundleExtras?
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.
- Captura RatingBar Haga clic
- Cómo hacer un ListView transparente en Android?
- Vista de calendario personalizado en Android
- Android no puede encontrar mi método onClick
- Elemento xml de la referencia de diseño de Android más adelante en el archivo
- SDK 5.0 RecyclerView no se puede instanciar
- Problema al crear un archivo en android
- ¿Por qué mi EditText se expandió horizontalmente o verticalmente después de configurar Width and Height como wrap_content en android?
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; }
- Posible solución para "No se pudo inicializar la clase sun.awt.X11.XToolkit"?
- Reproductor de vídeo en android (desarrollar)