Cómo acceder a un elemento específico de cada elemento de vista de cuadrícula
Tengo un gridview en el que hay dos elementos en cada uno de sus elementos, el primero es una imagen y el segundo es un título, el título es invisible en el lanzamiento de la aplicación, pero tengo un botón fuera de la vista de cuadrícula que cuando Hago clic en él, quiero cambiar la visibilidad de los títulos de los elementos a ser visible, mi problema es que no puedo acceder a cada título de cada elemento en la vista de la cuadrícula. Cuando establezco la visibilidad de los títulos (TextView) en el método onClick del botón independiente de mi actividad, cambia la visibilidad SOLAMENTE para el PRIMER elemento en la vista de cuadrícula.
Este bosquejo representa mi interfaz, así que los títulos son invisibles en el principio, pero cuando hago clic en "SetVisibilityButton", quiero fijarlos a Visible:
- Mantenga GridView al reanudar desde el modo de suspensión
- GridView del estilo de Google Play Música
- Ventanas emergentes en StickyGridHeader muestran una posición incorrecta
- La imagen se estira verticalmente mientras se usa Glide en la vista de cuadrícula Android
- ¿Cómo tener fondos y colores diferentes para divisores en GridView?
Image1 Image2 Image3 Title1 Title2 Title3 Image4 Image5 Image6 Title4 Title5 Title6 Image7 Image8 Image9 Title7 Title8 Title9 ---------------------------- SetVisibilityButton ____________________________
Fijé la visión de la rejilla en mi actividad del oncreate ():
favorGrid = (GridView) findViewById(R.id.favorGrid); favorGrid.setAdapter(adapter);
En mi clase ImageAdapter, este es mi método getView ():
@Override public View getView(int position, View convertView, ViewGroup parent) { View MyView = convertView; /*we define the view that will display on the grid*/ //Inflate the layout LayoutInflater li = getLayoutInflater(); MyView = li.inflate(R.layout.favor_item, null); // Add The Text!!! TextView tv = (TextView)MyView.findViewById(R.id.title); tv.setText(mTitles[position]); // Add The Image!!! ImageView iv = (ImageView)MyView.findViewById(R.id.favor_item_image); iv.setImageResource(mThumbIds[position]); return MyView; }
Para obtener el texto del título de mi actividad principal y establecer su visibilidad, intenté:
TextView title = (TextView) findViewById(R.id.title); title.setVisibility(View.VISIBLE);
Y probado:
// gv is the gridview (R.id.gridview) TextView title = (TextView)gv.findViewById(R.id.title); title.setVisibility(View.VISIBLE);
Y probado:
LinearLayout layout = (LinearLayout) findViewById(R.id.gridLayout); TextView title = (TextView)layout.findViewById(R.id.title); title.setVisibility(View.VISIBLE);
Pero todas estas soluciones establecen la visibilidad para sólo el primer elemento en la vista de cuadrícula.
Pasé mucho tiempo con este problema, pero aún no he encontrado una solución, ¿alguien podría ayudarme a arreglarlo por favor gracias de antemano
- Lista todas las imágenes de la tarjeta SD.
- Android - RecyclerView espaciado entre elementos en una cuadrícula
- RecyclerView - cuadrícula horizontal de dos hileras, segunda fila
- Personalizar menú contextual como pinterest menu
- Selector de lista de elementos GridView para varios elementos que no funcionan en Android
- ListView + GridView en el Widget
- GridLayout (no GridView) cómo estirar todos los niños uniformemente
- ¿Puede un GridView tener un pie de página y un encabezado igual que ListView?
Esto es simple:
GridView mGridView (Your object instance) final int size = mGridView.getChildCount(); for(int i = 0; i < size; i++) { ViewGroup gridChild = (ViewGroup) mGridView.getChildAt(i); int childSize = gridChild.getChildCount(); for(int k = 0; k < childSize; k++) { if( gridChild.getChildAt(k) instanceof TextView ) { gridChild.getChildAt(k).setVisibility(View.GONE); } } }
La forma correcta de obtener la vista de la lista para una posición específica es la siguiente:
View viewItem = list.getChildAt(position); if (viewItem != null) { TextView text = (TextView) viewItem.findViewById(R.id.item); }
- Cómo pasar el valor mediante Intent entre actividad en android
- Android sqlite CREATE TABLE SI NO EXISTE