OnClickListener del primer elemento de GridView no funciona
Esta pregunta ha sido contestada aquí
Pero mi requisito es reutilizar vistas, ya que tengo que lidiar con datos grandes por lo que no puedo iniciar el objeto de visor cada vez que necesito mostrar la vista.
- Ajuste del valor de la variable global en el botón
- Excepción de puntero nulo en .setOnClickListener
- Usando un bucle para establecer los botones enclicklistener
- Android - método setOnClickListener cómo funciona?
- Establecer OnClick Listener en el botón dentro de la vista de lista en android
Estoy usando la vista de cuadrícula con el patrón de titular de la vista cuando vuelvo a usar convertView que onClickListener para el primer artículo no respondo y tocando en cualquier lugar en gridview completa su acción.
A continuación se muestra mi código para el diseño con el elemento GridView.
<GridView android:id="@+id/peopleList" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="2" android:clickable="false" android:gravity="center" android:focusable="false" android:scrollbars="none" android:visibility="visible" android:stretchMode="columnWidth" android:focusableInTouchMode="false" android:background="@color/transparent"> </GridView>
A continuación se muestra mi diseño para los elementos gridView
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fl" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/selector_gridview_data"> <com.android.volley.toolbox.NetworkImageView android:id="@+id/peopleImage" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/light_color" android:scaleType="fitXY" android:src="@drawable/image_placeholder" /> <TextView android:id="@+id/peopleNameText" android:layout_width="match_parent" android:layout_height="40dp" android:layout_gravity="center|top" android:background="@drawable/picture_gradient_small" android:gravity="left|center" android:paddingLeft="@dimen/horizontal_margin_10dp" android:text="abc123" android:textColor="@color/white" android:textSize="15sp" > </TextView> <ImageButton android:id="@+id/followUnfollow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|bottom" android:layout_marginBottom="@dimen/horizontal_margin_10dp" android:layout_marginRight="@dimen/vertical_margin_5dp" android:background="@color/transparent" android:src="@drawable/follow" /> </FrameLayout>
A continuación se muestra el código de mi adaptador getView ()
@Override public View getView(int position, View convertView, ViewGroup parent) { final Person mDiscoverPeople = mDiscoverPlacesList.get(position); if (convertView == null) { mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = mInflater.inflate(R.layout.discover_people_grid_data_update, parent, false); mDiscoverPeopleListItemViewHolder = new DiscoverPeopleListItemViewHolder(); mDiscoverPeopleListItemViewHolder.peopleImage = (NetworkImageView) convertView.findViewById(R.id.peopleImage); mDiscoverPeopleListItemViewHolder.peopleName = (TextView) convertView.findViewById(R.id.peopleNameText); mDiscoverPeopleListItemViewHolder.mFrameLayout = (FrameLayout) convertView.findViewById(R.id.fl); mDiscoverPeopleListItemViewHolder.follow = (ImageView) convertView.findViewById(R.id.followUnfollow); convertView.setTag(mDiscoverPeopleListItemViewHolder); } else { mDiscoverPeopleListItemViewHolder = (DiscoverPeopleListItemViewHolder) convertView.getTag(); } mDiscoverPeopleListItemViewHolder.peopleImage.setImageUrl(mDiscoverPeople.getImgUrl(), imageLoader, false); mDiscoverPeopleListItemViewHolder.mFrameLayout.setLayoutParams(new GridView.LayoutParams(AppConstants.columnWidth - AppConstants.columnPadding, AppConstants.columnWidth - AppConstants.columnPadding)); mDiscoverPeopleListItemViewHolder.peopleName.setText(mDiscoverPeople.getName()); if (mDiscoverPeople.isFollowed()) mDiscoverPeopleListItemViewHolder.follow.setImageResource(R.drawable.following); else mDiscoverPeopleListItemViewHolder.follow.setImageResource(R.drawable.follow); mDiscoverPeopleListItemViewHolder.follow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FollowUnfollowUser mFollowUnfollowUser = new FollowUnfollowUser(mContext, mDiscoverPeopleListItemViewHolder.follow, mDiscoverPeople); mFollowUnfollowUser.followUnFollowUser(AppConstants.DISCOVER_PEOPLE); Toast.makeText(mContext, "Follow/Unfollow", Toast.LENGTH_SHORT).show(); } }); mDiscoverPeopleListItemViewHolder.peopleImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent mUserProfile = new Intent(mContext, FriendsRekkiesList.class); Bundle userData = new Bundle(); userData.putSerializable(AppConstants.USER_DETAILS, mDiscoverPeople); mUserProfile.putExtras(userData); mContext.startActivity(mUserProfile); } }); return convertView; }
Si no reutilizo mis vistas funciona bien, excepto para el rendimiento de la aplicación, necesito una manera de resolver esto.
Cualquier sugerencia será apreciada …. Thankx
- Cómo implementar OnClickListener en Android
- ¿Cómo agregar tiempo al temporizador de cuenta atrás?
- Obtener coordenadas haciendo clic en el mapa (openstreetmaps)
- ListView no responde a los eventos de clics en Android
- SetOnClickListener y setOnLongClickListener llamada en cuestión de botón único
- ¿Por qué no AsyncTasks siempre funcionan dentro de un onClickListener?
- ¿Por qué ButterKnife usa un DebouncingOnClickListener para los métodos de @OnClick?
- EditText campo es necesario antes de pasar a otra actividad
- ¿Existe una forma programática de obtener la configuración de "Modo de bloqueo" o "No molestar"
- Android studio: No se pudo notificar al oyente de evaluación del proyecto