GridView sélecteur de liste d'éléments pour plusieurs éléments ne fonctionne pas dans Android
Je tiens à attirer l'sélecteur sur de longues presse comme indiqué dans l'image. Quand je fais un appui long sur un élément, la CABINE de menu est activé. Mais la liste sélecteur voyant s'éteint une fois après avoir cliqué. Je veux que la liste des sélecteurs à être actif jusqu'à la CABINE menu est actif pour permettre à sélection multiple. Et la couleur doit basculer si je ne touchez deux fois. Ce code fonctionne comme un scintillement lorsque je clique sur elle. Tout un été logés à la même chose? Est-il un hack pour apporter cette fonctionnalité?
Gridview avec sélection multiple:
GridView setchoice dans mon OnCreate:
gridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
gridView.setMultiChoiceModeListener(new MultiChoiceModeListener());
Cela fonctionne bien:
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ImageView iv = (ImageView) v
.findViewById(R.id.imageview2);
ViewGroup gridChild = (ViewGroup) gridView
.getChildAt(position);
ViewGroup gridGrandChild = (ViewGroup) gridChild
.getChildAt(0);
ViewGroup gridGreatGrandChild = (ViewGroup) gridGrandChild
.getChildAt(0);
int childSize = gridGreatGrandChild.getChildCount();
if (iv.getId() == gridGreatGrandChild.getChildAt(1)
.getId()) {
if (iv.getVisibility() == 4)
iv.setVisibility(View.VISIBLE);
else
iv.setVisibility(View.INVISIBLE);
}
}});
Je suis en train de mettre en œuvre le même code à l'intérieur de la MultiChoiceModeListener() de la classe après l'ACR menu est activé. Copié le même code à l'intérieur de
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
}
méthode. Mais je suis incapable d'accéder aux éléments à l'intérieur de la viewgroup. Mais je suis capable d'accéder à la GridView dans son ensemble. Mais pas la personne de l'enfant à l'intérieur de la Grille.
Voici mon gridview mise en page:
<GridView
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:columnWidth="190dp"
android:drawSelectorOnTop="true"
android:choiceMode="multipleChoice"
android:horizontalSpacing="3dp"
android:listSelector="@drawable/list_selector"
android:numColumns="auto_fit"
android:paddingRight="4dp"
android:stretchMode="spacingWidthUniform"
android:verticalSpacing="3dp" >
</GridView>
Chaque élément dans le contrôle GridView est construit avec cette mise en page:
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RelativeLayout
android:id="@+id/relativelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ImageView>
<ImageView
android:id="@+id/imageview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageview"
android:layout_alignLeft="@+id/imageview"
android:layout_alignRight="@+id/imageview"
android:layout_alignTop="@+id/imageview"
android:visibility="invisible"
android:background="#76f9a49c"
>
</ImageView>
</RelativeLayout>
<ImageView
android:id="@+id/tagimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:layout_marginRight="-4dp"
android:src="@drawable/tag"
android:visibility="invisible" />
<ImageView
android:id="@+id/countimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="8dp"
android:layout_marginRight="5dp"
android:src="@drawable/dealcount_overlay"
android:visibility="invisible" />
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="11dp"
android:layout_marginRight="24dp"
android:text="100"
android:textColor="#fff"
android:visibility="invisible" >
</TextView>
<ProgressBar
android:id="@+id/progressbar"
style="@android:style/Widget.ProgressBar.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:visibility="visible" />
</FrameLayout>
<TextView
android:id="@+id/textView_nodata"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:layout_below="@+id/frameLayout1"
android:layout_centerHorizontal="true"
android:text="No data available. Try different query!"
android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="gone" />
</RelativeLayout>
Voici mon list_selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/gridviewlistselector" android:state_focused="true" android:state_pressed="false"/>
<item android:state_focused="true"><shape>
<solid android:color="#66000000" />
</shape></item>
<item android:state_selected="true"><shape>
<solid android:color="#66000000" />
</shape></item>
<item android:state_pressed="true"><shape>
<solid android:color="#66000000" />
</shape></item>
<item android:state_enabled="false" android:state_focused="true"><shape>
<solid android:color="#66000000" />
</shape></item>
</selector>
Comment puis-je obtenir la fonctionnalité? Je suis coincé à ce. J'ai essayé différentes combinaisons sur les Sélecteurs. Mais rien ne semble fonctionner pour moi. Dois-je besoin de fournir d'autres détails?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr que c'est la droit solution, mais j'ai mis ce pour la
android:background
sur ma liste des éléments:Je n'ai pas le
android:listSelector
attribut sur l'affichage de la grille.Donner rembourrage dans votre grille de point.
Maintenir bean classe pour chaque objet dans la grille de l'adaptateur à la piste de l'objet est sélectionné ou désélectionné.
Basé sur cette valeur, vous pouvez mettre à jour votre grille de point de couleur de fond de l'acc etat sélectionner/désélectionner.
Mise à jour de la valeur de l'objet en onitemclieck listner et aussi de fond de la vue.
ceci peut être réalisé par le suivi des éléments sélectionnés et la modification de leurs origines à l'intérieur de l'adaptateur.
Je suppose que vous obtiendrez de l'aide de ce post
I m a suggéré de mettre en œuvre personnalisée un drawable selon votre condition.En appuyant longtemps, à l'écoute ,vous pouvez appliquer ce que l'état vous êtes. C'est l'un de la manière d'écrire du code à partir de notre propre zéro.
https://github.com/rameshkec85/Example-Android-CustomDrawableStates
Pour cela, vous avez besoin de changer de Grille de Point de Vue, BackgroundColor sur simple/clic long.
Ci-dessous est le code de référence, pour la même chose:
Espérons que cette aide. Merci.